import sys
import xlrd
from operator import add
from pyspark.sql import SparkSession, Row
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import seaborn as sns
import pandas as pd
import numpy as np
import random
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
from urllib.request import urlopen
import json
import os
from pyspark.sql import SparkSession
import pyspark
import pyspark.sql.functions as F
from pyspark.sql.types import *
from pyspark.sql import DataFrameStatFunctions as statFunc
from pyspark.sql.window import Window
from datetime import datetime
from datetime import *
import plotly.offline as pyo
spark = SparkSession\
.builder\
.appName("PythonWordCount")\
.getOrCreate()
data = [Row(col1='pyspark and spark', col2=1), Row(col1='pyspark', col2=2), Row(col1='spark vs hadoop', col2=2), Row(col1='spark', col2=2), Row(col1='hadoop', col2=2)]
df = spark.createDataFrame(data)
lines = df.rdd.map(lambda r: r[0])
counters = lines.flatMap(lambda x: x.split(' ')) \
.map(lambda x: (x, 1)) \
.reduceByKey(add)
output = counters.collect()
sortedCollection = sorted(output, key = lambda r: r[1], reverse = True)
for (word, count) in sortedCollection:
print("%s: %i" % (word, count))
spark: 3 hadoop: 2 pyspark: 2 vs: 1 and: 1
spark = SparkSession.builder.master("local[*]").getOrCreate()
path='A2019_03.csv'
df = pd.read_csv(path,sep=';',nrows=100)
df.head()
| FLX_ANN_MOI | ORG_CLE_REG | AGE_BEN_SNDS | BEN_RES_REG | BEN_CMU_TOP | ... | PSP_ACT_CAT | PSP_SPE_SNDS | PSP_STJ_SNDS | TOP_PS5_TRG | Unnamed: 55 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 201903 | 44 | 20 | 44 | 9 | ... | 1 | 12 | 1 | 9 | NaN |
| 1 | 201903 | 93 | 0 | 93 | 9 | ... | 4 | 36 | 1 | 9 | NaN |
| 2 | 201903 | 44 | 30 | 44 | 9 | ... | 0 | 1 | 2 | 9 | NaN |
| 3 | 201903 | 11 | 60 | 84 | 9 | ... | 1 | 15 | 1 | 9 | NaN |
| 4 | 201903 | 93 | 60 | 93 | 9 | ... | 0 | 1 | 2 | 9 | NaN |
5 rows × 56 columns
print(df.shape)
spark_df = spark.read.csv(path,sep=';',header=True).limit(10)
(100, 56)
spark_df.show(n=2,truncate=False)
+-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+------------+-----------+------------+-----------+------------+-----------+-------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-------+-------+-------+-------+-------+-----------+-----------+-----------+-------+-------+-------+-----------+-----------+-----------+-----------+-----------+------------+-----------+------------+------------+-----------+------------+-----------+------------+------------+-----------+----+ |FLX_ANN_MOI|ORG_CLE_REG|AGE_BEN_SNDS|BEN_RES_REG|BEN_CMU_TOP|BEN_QLT_COD|BEN_SEX_COD|DDP_SPE_COD|ETE_CAT_SNDS|ETE_REG_COD|ETE_TYP_SNDS|ETP_REG_COD|ETP_CAT_SNDS|MDT_TYP_COD|MFT_COD|PRS_FJH_TYP|PRS_ACT_COG|PRS_ACT_NBR|PRS_ACT_QTE|PRS_DEP_MNT|PRS_PAI_MNT|PRS_REM_BSE|PRS_REM_MNT|FLT_ACT_COG|FLT_ACT_NBR|FLT_ACT_QTE|FLT_PAI_MNT|FLT_DEP_MNT|FLT_REM_MNT|SOI_ANN|SOI_MOI|ASU_NAT|ATT_NAT|CPL_COD|CPT_ENV_TYP|DRG_AFF_NAT|ETE_IND_TAA|EXO_MTF|MTM_NAT|PRS_NAT|PRS_PPU_SEC|PRS_REM_TAU|PRS_REM_TYP|PRS_PDS_QCP|EXE_INS_REG|PSE_ACT_SNDS|PSE_ACT_CAT|PSE_SPE_SNDS|PSE_STJ_SNDS|PRE_INS_REG|PSP_ACT_SNDS|PSP_ACT_CAT|PSP_SPE_SNDS|PSP_STJ_SNDS|TOP_PS5_TRG|_c55| +-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+------------+-----------+------------+-----------+------------+-----------+-------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-------+-------+-------+-------+-------+-----------+-----------+-----------+-------+-------+-------+-----------+-----------+-----------+-----------+-----------+------------+-----------+------------+------------+-----------+------------+-----------+------------+------------+-----------+----+ |201903 |44 |20 |44 |9 |1 |2 |0 |9999 |99 |99 |99 |9999 |9 |99 |0 |1 |1 |1 |0 |27.44 |27.44 |16.46 |1 |1 |1 |27.44 |0 |16.46 |2019 |03 |10 |0 |0 |9 |99 |9 |99 |9 |3522 |2 |60 |99 |31 |44 |50 |2 |0 |1 |44 |0 |1 |12 |1 |9 |null| |201903 |93 |0 |93 |9 |3 |2 |0 |9999 |99 |99 |99 |9999 |9 |99 |0 |1 |1 |1 |0 |1.34 |0 |.34 |0 |0 |0 |0 |0 |0 |2019 |03 |10 |0 |0 |9 |99 |9 |99 |9 |3313 |2 |25 |99 |31 |93 |50 |2 |0 |1 |93 |0 |4 |36 |1 |9 |null| +-----------+-----------+------------+-----------+-----------+-----------+-----------+-----------+------------+-----------+------------+-----------+------------+-----------+-------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-------+-------+-------+-------+-------+-----------+-----------+-----------+-------+-------+-------+-----------+-----------+-----------+-----------+-----------+------------+-----------+------------+------------+-----------+------------+-----------+------------+------------+-----------+----+ only showing top 2 rows
22/01/06 17:29:14 WARN CSVHeaderChecker: CSV header does not conform to the schema. Header: FLX_ANN_MOI, ORG_CLE_REG, AGE_BEN_SNDS, BEN_RES_REG, BEN_CMU_TOP, BEN_QLT_COD, BEN_SEX_COD, DDP_SPE_COD, ETE_CAT_SNDS, ETE_REG_COD, ETE_TYP_SNDS, ETP_REG_COD, ETP_CAT_SNDS, MDT_TYP_COD, MFT_COD, PRS_FJH_TYP, PRS_ACT_COG, PRS_ACT_NBR, PRS_ACT_QTE, PRS_DEP_MNT, PRS_PAI_MNT, PRS_REM_BSE, PRS_REM_MNT, FLT_ACT_COG, FLT_ACT_NBR, FLT_ACT_QTE, FLT_PAI_MNT, FLT_DEP_MNT, FLT_REM_MNT, SOI_ANN, SOI_MOI, ASU_NAT, ATT_NAT, CPL_COD, CPT_ENV_TYP, DRG_AFF_NAT, ETE_IND_TAA, EXO_MTF, MTM_NAT, PRS_NAT, PRS_PPU_SEC, PRS_REM_TAU, PRS_REM_TYP, PRS_PDS_QCP, EXE_INS_REG, PSE_ACT_SNDS, PSE_ACT_CAT, PSE_SPE_SNDS, PSE_STJ_SNDS, PRE_INS_REG, PSP_ACT_SNDS, PSP_ACT_CAT, PSP_SPE_SNDS, PSP_STJ_SNDS, TOP_PS5_TRG, Schema: FLX_ANN_MOI, ORG_CLE_REG, AGE_BEN_SNDS, BEN_RES_REG, BEN_CMU_TOP, BEN_QLT_COD, BEN_SEX_COD, DDP_SPE_COD, ETE_CAT_SNDS, ETE_REG_COD, ETE_TYP_SNDS, ETP_REG_COD, ETP_CAT_SNDS, MDT_TYP_COD, MFT_COD, PRS_FJH_TYP, PRS_ACT_COG, PRS_ACT_NBR, PRS_ACT_QTE, PRS_DEP_MNT, PRS_PAI_MNT, PRS_REM_BSE, PRS_REM_MNT, FLT_ACT_COG, FLT_ACT_NBR, FLT_ACT_QTE, FLT_PAI_MNT, FLT_DEP_MNT, FLT_REM_MNT, SOI_ANN, SOI_MOI, ASU_NAT, ATT_NAT, CPL_COD, CPT_ENV_TYP, DRG_AFF_NAT, ETE_IND_TAA, EXO_MTF, MTM_NAT, PRS_NAT, PRS_PPU_SEC, PRS_REM_TAU, PRS_REM_TYP, PRS_PDS_QCP, EXE_INS_REG, PSE_ACT_SNDS, PSE_ACT_CAT, PSE_SPE_SNDS, PSE_STJ_SNDS, PRE_INS_REG, PSP_ACT_SNDS, PSP_ACT_CAT, PSP_SPE_SNDS, PSP_STJ_SNDS, TOP_PS5_TRG, _c55 Expected: _c55 but found: CSV file: file:///home/guignole/Documents/Damir%20Machine%20Learning/A2019_03.csv
df[['FLX_ANN_MOI','SOI_ANN','SOI_MOI']]
| FLX_ANN_MOI | SOI_ANN | SOI_MOI | |
|---|---|---|---|
| 0 | 201903 | 2019 | 3 |
| 1 | 201903 | 2019 | 3 |
| 2 | 201903 | 2019 | 2 |
| 3 | 201903 | 2019 | 3 |
| 4 | 201903 | 2018 | 12 |
| ... | ... | ... | ... |
| 95 | 201903 | 2019 | 3 |
| 96 | 201903 | 2019 | 1 |
| 97 | 201903 | 2019 | 3 |
| 98 | 201903 | 2018 | 10 |
| 99 | 201903 | 2019 | 3 |
100 rows × 3 columns
spark_df.groupby('FLX_ANN_MOI','ORG_CLE_REG').count().show(truncate=False)
+-----------+-----------+-----+ |FLX_ANN_MOI|ORG_CLE_REG|count| +-----------+-----------+-----+ |201903 |44 |2 | |201903 |93 |3 | |201903 |11 |2 | |201903 |99 |1 | |201903 |84 |1 | |201903 |53 |1 | +-----------+-----------+-----+
Avec le fichier XML de la base de données nous avons décide de choisir les colonnes comme suit, d'abord on étudie la corrélation de toutes les colonnes avec pandas
rs = np.random.RandomState(0)
corr = df.corr()
corr.style.background_gradient(cmap='coolwarm')
/home/guignole/.local/lib/python3.8/site-packages/pandas/io/formats/style.py:2813: RuntimeWarning: All-NaN slice encountered /home/guignole/.local/lib/python3.8/site-packages/pandas/io/formats/style.py:2814: RuntimeWarning: All-NaN slice encountered
| FLX_ANN_MOI | ORG_CLE_REG | AGE_BEN_SNDS | BEN_RES_REG | BEN_CMU_TOP | BEN_QLT_COD | BEN_SEX_COD | DDP_SPE_COD | ETE_CAT_SNDS | ETE_REG_COD | ETE_TYP_SNDS | ETP_REG_COD | ETP_CAT_SNDS | MDT_TYP_COD | MFT_COD | PRS_FJH_TYP | PRS_ACT_COG | PRS_ACT_NBR | PRS_ACT_QTE | PRS_DEP_MNT | PRS_PAI_MNT | PRS_REM_BSE | PRS_REM_MNT | FLT_ACT_COG | FLT_ACT_NBR | FLT_ACT_QTE | FLT_PAI_MNT | FLT_DEP_MNT | FLT_REM_MNT | SOI_ANN | SOI_MOI | ASU_NAT | ATT_NAT | CPL_COD | CPT_ENV_TYP | DRG_AFF_NAT | ETE_IND_TAA | EXO_MTF | MTM_NAT | PRS_NAT | PRS_PPU_SEC | PRS_REM_TAU | PRS_REM_TYP | PRS_PDS_QCP | EXE_INS_REG | PSE_ACT_SNDS | PSE_ACT_CAT | PSE_SPE_SNDS | PSE_STJ_SNDS | PRE_INS_REG | PSP_ACT_SNDS | PSP_ACT_CAT | PSP_SPE_SNDS | PSP_STJ_SNDS | TOP_PS5_TRG | Unnamed: 55 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| FLX_ANN_MOI | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| ORG_CLE_REG | nan | 1.000000 | -0.096069 | 0.598459 | -0.088652 | 0.208250 | -0.038855 | 0.113723 | 0.131017 | 0.341780 | 0.145990 | 0.140549 | -0.173263 | 0.036166 | 0.113764 | 0.014434 | -0.095180 | -0.086181 | -0.069273 | -0.068788 | -0.070862 | -0.070972 | -0.074743 | -0.095261 | -0.085436 | -0.069924 | -0.071254 | -0.068788 | -0.074956 | 0.141987 | -0.132200 | -0.114987 | nan | nan | -0.077016 | -0.067333 | 0.157134 | -0.096693 | -0.098489 | 0.124245 | -0.026033 | -0.024588 | -0.091852 | 0.092687 | 0.112614 | 0.125557 | -0.068182 | -0.207966 | -0.018961 | 0.205363 | 0.109529 | -0.143539 | 0.022812 | 0.056488 | -0.099749 | nan |
| AGE_BEN_SNDS | nan | -0.096069 | 1.000000 | -0.092635 | -0.268859 | -0.571098 | 0.020101 | 0.244658 | 0.100408 | 0.014677 | 0.089915 | -0.046146 | -0.019929 | 0.041284 | 0.103130 | 0.177743 | 0.031296 | 0.059135 | 0.059737 | 0.162534 | 0.050163 | 0.049275 | 0.057902 | 0.031309 | 0.059611 | 0.059821 | 0.050263 | 0.162534 | 0.057935 | 0.003556 | 0.002949 | -0.016803 | nan | nan | -0.269830 | -0.261557 | 0.075067 | -0.227204 | -0.269023 | 0.050044 | 0.162481 | 0.153832 | -0.253344 | -0.101011 | -0.146316 | -0.100192 | 0.083550 | -0.060967 | 0.182104 | -0.080386 | -0.193300 | -0.048568 | -0.143244 | 0.115207 | -0.253392 | nan |
| BEN_RES_REG | nan | 0.598459 | -0.092635 | 1.000000 | -0.053205 | 0.183535 | -0.028988 | 0.063859 | 0.126990 | 0.324788 | 0.142195 | 0.295575 | -0.021539 | 0.068676 | 0.110923 | 0.007926 | -0.092001 | -0.075738 | -0.072407 | -0.060079 | -0.064992 | -0.064428 | -0.053979 | -0.091959 | -0.074073 | -0.072098 | -0.064683 | -0.060079 | -0.053798 | -0.012132 | -0.026417 | 0.094896 | nan | nan | -0.073689 | -0.034981 | 0.156702 | -0.083741 | -0.056660 | 0.190390 | -0.021961 | -0.117209 | -0.059241 | 0.043593 | 0.370205 | 0.088690 | 0.172514 | -0.047660 | 0.031786 | 0.255953 | 0.133813 | -0.032551 | 0.065442 | 0.047236 | -0.053630 | nan |
| BEN_CMU_TOP | nan | -0.088652 | -0.268859 | -0.053205 | 1.000000 | 0.077706 | 0.109016 | -0.909658 | -0.198319 | -0.186828 | -0.200799 | -0.096289 | -0.011114 | -0.048849 | -0.194394 | -0.088757 | -0.103925 | -0.157496 | -0.157018 | -0.082227 | -0.125978 | -0.125250 | -0.133892 | -0.103835 | -0.157265 | -0.156286 | -0.125798 | -0.082227 | -0.133805 | 0.103301 | -0.166693 | -0.045121 | nan | nan | 0.946378 | 0.986046 | -0.198692 | 0.909937 | 0.995109 | -0.227453 | -0.151952 | 0.116327 | 0.998272 | -0.153620 | 0.131643 | -0.163206 | -0.162288 | 0.204765 | -0.094534 | 0.115680 | -0.095508 | 0.186715 | -0.074925 | -0.058903 | 0.997691 | nan |
| BEN_QLT_COD | nan | 0.208250 | -0.571098 | 0.183535 | 0.077706 | 1.000000 | -0.048114 | -0.070872 | 0.019860 | 0.110804 | 0.028046 | 0.058064 | -0.013694 | 0.037369 | 0.009135 | -0.027436 | -0.057051 | -0.054021 | -0.057528 | -0.016815 | -0.052583 | -0.052587 | -0.057327 | -0.057076 | -0.053340 | -0.057734 | -0.052736 | -0.016815 | -0.057391 | 0.098900 | -0.073706 | -0.067036 | nan | nan | 0.080789 | 0.085865 | 0.040462 | 0.061421 | 0.083033 | 0.024568 | 0.003466 | -0.166727 | 0.064960 | 0.100136 | 0.082907 | 0.042168 | -0.074140 | -0.008187 | -0.046612 | 0.117155 | 0.275492 | 0.024954 | 0.239881 | -0.017093 | 0.066095 | nan |
| BEN_SEX_COD | nan | -0.038855 | 0.020101 | -0.028988 | 0.109016 | -0.048114 | 1.000000 | -0.087182 | 0.050370 | -0.031172 | 0.049983 | -0.118531 | -0.089053 | 0.103729 | 0.033514 | 0.160010 | -0.093436 | -0.127701 | -0.109033 | 0.117623 | -0.113322 | -0.114148 | -0.121668 | -0.093511 | -0.125976 | -0.109643 | -0.113444 | 0.117623 | -0.121743 | -0.035744 | -0.001852 | -0.042220 | nan | nan | 0.179234 | 0.114393 | 0.055995 | 0.149524 | 0.120224 | 0.012538 | -0.024742 | 0.008308 | 0.112224 | -0.024223 | -0.038010 | 0.104151 | -0.125671 | 0.183292 | 0.132664 | 0.071544 | 0.106614 | -0.026800 | 0.043255 | 0.083133 | 0.108504 | nan |
| DDP_SPE_COD | nan | 0.113723 | 0.244658 | 0.063859 | -0.909658 | -0.070872 | -0.087182 | 1.000000 | 0.399437 | 0.347524 | 0.400697 | 0.139138 | 0.080516 | 0.226603 | 0.393415 | 0.085177 | 0.113323 | 0.157852 | 0.159341 | 0.093111 | 0.120730 | 0.119852 | 0.119569 | 0.113205 | 0.157367 | 0.158390 | 0.120470 | 0.093111 | 0.119438 | -0.061372 | 0.120505 | 0.056729 | nan | nan | -0.856824 | -0.907529 | 0.398871 | -0.843848 | -0.902977 | 0.343581 | 0.297308 | -0.119642 | -0.908689 | 0.190003 | -0.255376 | 0.279823 | 0.194285 | -0.197628 | 0.074562 | -0.193108 | 0.105428 | -0.228525 | 0.119309 | 0.015865 | -0.910622 | nan |
| ETE_CAT_SNDS | nan | 0.131017 | 0.100408 | 0.126990 | -0.198319 | 0.019860 | 0.050370 | 0.399437 | 1.000000 | 0.844198 | 0.998209 | 0.308404 | 0.360275 | 0.592518 | 0.991640 | 0.157090 | 0.061451 | 0.061034 | 0.057928 | 0.064879 | 0.041266 | 0.040707 | 0.035501 | 0.061383 | 0.059304 | 0.057410 | 0.041086 | 0.064879 | 0.035431 | -0.035651 | 0.103539 | -0.075387 | nan | nan | -0.184262 | -0.207807 | 0.991975 | -0.193461 | -0.191354 | 0.582337 | 0.772311 | -0.040142 | -0.195452 | 0.402265 | -0.586419 | 0.571558 | 0.165489 | -0.321487 | 0.068611 | -0.393391 | 0.058807 | -0.213266 | 0.124678 | -0.022751 | -0.197841 | nan |
| ETE_REG_COD | nan | 0.341780 | 0.014677 | 0.324788 | -0.186828 | 0.110804 | -0.031172 | 0.347524 | 0.844198 | 1.000000 | 0.859931 | 0.450733 | 0.286718 | 0.403200 | 0.819659 | 0.130011 | 0.053214 | 0.051924 | 0.050382 | 0.056148 | 0.036469 | 0.035986 | 0.032359 | 0.053155 | 0.050486 | 0.049934 | 0.036313 | 0.056148 | 0.032298 | -0.060920 | 0.062635 | -0.103041 | nan | nan | -0.180600 | -0.196771 | 0.867563 | -0.198871 | -0.184518 | 0.501501 | 0.480586 | -0.081902 | -0.187875 | 0.336141 | -0.517520 | 0.480559 | 0.144548 | -0.328783 | 0.050222 | -0.340451 | 0.050893 | -0.200450 | 0.067014 | -0.028312 | -0.189771 | nan |
| ETE_TYP_SNDS | nan | 0.145990 | 0.089915 | 0.142195 | -0.200799 | 0.028046 | 0.049983 | 0.400697 | 0.998209 | 0.859931 | 1.000000 | 0.322016 | 0.360982 | 0.588132 | 0.985860 | 0.153139 | 0.061418 | 0.059802 | 0.056846 | 0.065006 | 0.039534 | 0.038973 | 0.032569 | 0.061349 | 0.058070 | 0.056324 | 0.039353 | 0.065006 | 0.032498 | -0.043186 | 0.107581 | -0.071517 | nan | nan | -0.186156 | -0.210268 | 0.996450 | -0.196354 | -0.193984 | 0.586986 | 0.746814 | -0.044673 | -0.198067 | 0.413197 | -0.588686 | 0.572773 | 0.165961 | -0.317725 | 0.064552 | -0.394160 | 0.058921 | -0.209468 | 0.123765 | -0.018934 | -0.200440 | nan |
| ETP_REG_COD | nan | 0.140549 | -0.046146 | 0.295575 | -0.096289 | 0.058064 | -0.118531 | 0.139138 | 0.308404 | 0.450733 | 0.322016 | 1.000000 | 0.747121 | 0.059702 | 0.296755 | 0.283603 | 0.081496 | 0.092301 | 0.080540 | 0.091298 | 0.068489 | 0.068351 | 0.069301 | 0.081559 | 0.090881 | 0.081049 | 0.068807 | 0.091298 | 0.069503 | -0.145779 | 0.114113 | 0.098313 | nan | nan | -0.127255 | -0.103793 | 0.329127 | -0.099674 | -0.098810 | 0.064673 | 0.177198 | -0.090355 | -0.099055 | -0.028431 | 0.025322 | -0.008715 | 0.087173 | -0.106097 | 0.262754 | -0.553581 | 0.009957 | 0.223382 | 0.052335 | 0.202437 | -0.088346 | nan |
| ETP_CAT_SNDS | nan | -0.173263 | -0.019929 | -0.021539 | -0.011114 | -0.013694 | -0.089053 | 0.080516 | 0.360275 | 0.286718 | 0.360982 | 0.747121 | 1.000000 | 0.190520 | 0.362572 | 0.277526 | 0.102024 | 0.114542 | 0.093789 | 0.112704 | 0.076514 | 0.076180 | 0.073450 | 0.102047 | 0.112093 | 0.093985 | 0.076643 | 0.112704 | 0.073546 | -0.152631 | 0.154379 | 0.121364 | nan | nan | -0.019035 | -0.021204 | 0.362642 | -0.033728 | -0.009143 | 0.037916 | 0.377829 | -0.117856 | -0.009807 | -0.027386 | -0.173709 | -0.043472 | 0.104302 | -0.061827 | 0.255759 | -0.683378 | -0.136254 | 0.269603 | -0.040557 | 0.245831 | -0.003033 | nan |
| MDT_TYP_COD | nan | 0.036166 | 0.041284 | 0.068676 | -0.048849 | 0.037369 | 0.103729 | 0.226603 | 0.592518 | 0.403200 | 0.588132 | 0.059702 | 0.190520 | 1.000000 | 0.571756 | -0.014014 | 0.037068 | 0.037708 | 0.040012 | 0.038346 | 0.033593 | 0.033286 | 0.036491 | 0.037043 | 0.036986 | 0.039822 | 0.033506 | 0.038346 | 0.036482 | 0.006555 | 0.096024 | 0.041292 | nan | nan | -0.041918 | -0.056012 | 0.620416 | -0.075615 | -0.039826 | 0.338588 | 0.458258 | 0.021088 | -0.042981 | 0.281900 | -0.358309 | 0.385437 | 0.099364 | -0.022083 | -0.058254 | -0.232508 | 0.034757 | -0.179245 | 0.135893 | -0.088178 | -0.045057 | nan |
| MFT_COD | nan | 0.113764 | 0.103130 | 0.110923 | -0.194394 | 0.009135 | 0.033514 | 0.393415 | 0.991640 | 0.819659 | 0.985860 | 0.296755 | 0.362572 | 0.571756 | 1.000000 | 0.161935 | 0.060880 | 0.062692 | 0.059330 | 0.063976 | 0.044086 | 0.043538 | 0.040569 | 0.060814 | 0.060994 | 0.058831 | 0.043910 | 0.063976 | 0.040503 | -0.028390 | 0.094028 | -0.083320 | nan | nan | -0.181107 | -0.203554 | 0.974111 | -0.187761 | -0.187162 | 0.571510 | 0.812249 | -0.040052 | -0.191217 | 0.396533 | -0.577877 | 0.563983 | 0.163136 | -0.329100 | 0.074004 | -0.387916 | 0.057988 | -0.203015 | 0.124299 | -0.021683 | -0.193587 | nan |
| PRS_FJH_TYP | nan | 0.014434 | 0.177743 | 0.007926 | -0.088757 | -0.027436 | 0.160010 | 0.085177 | 0.157090 | 0.130011 | 0.153139 | 0.283603 | 0.277526 | -0.014014 | 0.161935 | 1.000000 | -0.015742 | nan | -0.023024 | -0.048676 | -0.051085 | -0.050977 | -0.054007 | -0.015674 | -0.015420 | -0.022440 | -0.050890 | -0.048676 | -0.053886 | -0.183808 | 0.041025 | -0.076530 | nan | nan | -0.117304 | -0.081809 | 0.153990 | -0.055356 | -0.090021 | -0.167505 | 0.128698 | 0.122163 | -0.082532 | -0.216348 | -0.073357 | -0.217146 | -0.065985 | 0.029938 | 0.966801 | -0.140572 | 0.170563 | 0.286601 | 0.009841 | 0.874875 | -0.077200 | nan |
| PRS_ACT_COG | nan | -0.095180 | 0.031296 | -0.092001 | -0.103925 | -0.057051 | -0.093436 | 0.113323 | 0.061451 | 0.053214 | 0.061418 | 0.081496 | 0.102024 | 0.037068 | 0.060880 | -0.015742 | 1.000000 | 0.998854 | 0.978232 | -0.015656 | 0.984474 | 0.984495 | 0.980275 | 1.000000 | 0.998838 | 0.978222 | 0.984477 | -0.015656 | 0.980273 | -0.197124 | 0.258780 | -0.017721 | nan | nan | -0.112915 | -0.088812 | 0.061164 | -0.164321 | -0.103924 | 0.072849 | 0.046569 | -0.034116 | -0.101760 | 0.064833 | -0.123119 | -0.006359 | 0.036831 | -0.042952 | -0.025127 | -0.170671 | -0.014661 | -0.035591 | -0.044000 | -0.041871 | -0.099788 | nan |
| PRS_ACT_NBR | nan | -0.086181 | 0.059135 | -0.075738 | -0.157496 | -0.054021 | -0.127701 | 0.157852 | 0.061034 | 0.051924 | 0.059802 | 0.092301 | 0.114542 | 0.037708 | 0.062692 | nan | 0.998854 | 1.000000 | 0.999968 | -0.015700 | 0.998898 | 0.998893 | 0.994878 | 0.998855 | 0.999990 | 0.999956 | 0.998895 | -0.015700 | 0.994872 | -0.234585 | 0.282571 | -0.014870 | nan | nan | -0.170117 | -0.139607 | 0.058947 | -0.218853 | -0.158285 | 0.053379 | 0.054427 | -0.045744 | -0.154426 | 0.042969 | -0.119706 | -0.026988 | 0.039187 | -0.047734 | -0.031387 | -0.184652 | -0.015243 | -0.022885 | -0.070147 | -0.063001 | -0.151189 | nan |
| PRS_ACT_QTE | nan | -0.069273 | 0.059737 | -0.072407 | -0.157018 | -0.057528 | -0.109033 | 0.159341 | 0.057928 | 0.050382 | 0.056846 | 0.080540 | 0.093789 | 0.040012 | 0.059330 | -0.023024 | 0.978232 | 0.999968 | 1.000000 | -0.015444 | 0.994040 | 0.994040 | 0.989155 | 0.978233 | 0.999959 | 0.999990 | 0.994043 | -0.015444 | 0.989153 | -0.158363 | 0.240357 | -0.013123 | nan | nan | -0.167113 | -0.141856 | 0.056056 | -0.211277 | -0.157645 | 0.060368 | 0.051352 | -0.050944 | -0.154781 | 0.036980 | -0.111332 | -0.013658 | 0.041157 | -0.044757 | -0.030310 | -0.159924 | -0.014789 | -0.038832 | -0.051999 | -0.051819 | -0.152323 | nan |
| PRS_DEP_MNT | nan | -0.068788 | 0.162534 | -0.060079 | -0.082227 | -0.016815 | 0.117623 | 0.093111 | 0.064879 | 0.056148 | 0.065006 | 0.091298 | 0.112704 | 0.038346 | 0.063976 | -0.048676 | -0.015656 | -0.015700 | -0.015444 | 1.000000 | -0.010932 | -0.015439 | -0.017363 | -0.015633 | -0.015255 | -0.015273 | -0.010879 | 1.000000 | -0.017334 | -0.219672 | 0.277234 | -0.018209 | nan | nan | -0.091239 | -0.136859 | 0.064822 | -0.144663 | -0.082544 | 0.013934 | 0.048019 | -0.056448 | -0.080150 | -0.007634 | -0.103553 | -0.045003 | 0.038840 | 0.020685 | -0.058781 | -0.159410 | -0.015327 | -0.036624 | -0.028462 | -0.078939 | -0.078327 | nan |
| PRS_PAI_MNT | nan | -0.070862 | 0.050163 | -0.064992 | -0.125978 | -0.052583 | -0.113322 | 0.120730 | 0.041266 | 0.036469 | 0.039534 | 0.068489 | 0.076514 | 0.033593 | 0.044086 | -0.051085 | 0.984474 | 0.998898 | 0.994040 | -0.010932 | 1.000000 | 0.999987 | 0.997204 | 0.984473 | 0.998898 | 0.994021 | 0.999998 | -0.010932 | 0.997199 | -0.167771 | 0.244652 | -0.017396 | nan | nan | -0.134950 | -0.109241 | 0.038499 | -0.183510 | -0.126153 | 0.054682 | 0.043416 | -0.041103 | -0.123783 | 0.044575 | -0.100703 | -0.014934 | 0.035040 | -0.038848 | -0.058214 | -0.139924 | -0.014581 | -0.033277 | -0.050215 | -0.074660 | -0.121679 | nan |
| PRS_REM_BSE | nan | -0.070972 | 0.049275 | -0.064428 | -0.125250 | -0.052587 | -0.114148 | 0.119852 | 0.040707 | 0.035986 | 0.038973 | 0.068351 | 0.076180 | 0.033286 | 0.043538 | -0.050977 | 0.984495 | 0.998893 | 0.994040 | -0.015439 | 0.999987 | 1.000000 | 0.997227 | 0.984495 | 0.998899 | 0.994026 | 0.999989 | -0.015439 | 0.997225 | -0.167013 | 0.243571 | -0.017235 | nan | nan | -0.134535 | -0.108286 | 0.037941 | -0.182487 | -0.125415 | 0.054413 | 0.043018 | -0.040301 | -0.123052 | 0.044295 | -0.099742 | -0.014884 | 0.034872 | -0.038766 | -0.058021 | -0.139147 | -0.014446 | -0.032940 | -0.049894 | -0.074347 | -0.120894 | nan |
| PRS_REM_MNT | nan | -0.074743 | 0.057902 | -0.053979 | -0.133892 | -0.057327 | -0.121668 | 0.119569 | 0.035501 | 0.032359 | 0.032569 | 0.069301 | 0.073450 | 0.036491 | 0.040569 | -0.054007 | 0.980275 | 0.994878 | 0.989155 | -0.017363 | 0.997204 | 0.997227 | 1.000000 | 0.980277 | 0.994902 | 0.989158 | 0.997210 | -0.017363 | 0.999999 | -0.173955 | 0.248135 | 0.024272 | nan | nan | -0.144014 | -0.118096 | 0.031000 | -0.189887 | -0.133868 | 0.068373 | 0.047209 | -0.043936 | -0.131496 | 0.024726 | -0.091250 | -0.027120 | 0.083534 | -0.042441 | -0.048170 | -0.141816 | -0.016238 | -0.036679 | -0.055513 | -0.078161 | -0.129170 | nan |
| FLT_ACT_COG | nan | -0.095261 | 0.031309 | -0.091959 | -0.103835 | -0.057076 | -0.093511 | 0.113205 | 0.061383 | 0.053155 | 0.061349 | 0.081559 | 0.102047 | 0.037043 | 0.060814 | -0.015674 | 1.000000 | 0.998855 | 0.978233 | -0.015633 | 0.984473 | 0.984495 | 0.980277 | 1.000000 | 0.998841 | 0.978226 | 0.984477 | -0.015633 | 0.980276 | -0.197188 | 0.258813 | -0.017697 | nan | nan | -0.112991 | -0.088728 | 0.061097 | -0.164266 | -0.103854 | 0.072742 | 0.046527 | -0.033899 | -0.101672 | 0.064748 | -0.123009 | -0.006497 | 0.036854 | -0.042895 | -0.025047 | -0.170665 | -0.014641 | -0.035540 | -0.043988 | -0.041787 | -0.099680 | nan |
| FLT_ACT_NBR | nan | -0.085436 | 0.059611 | -0.074073 | -0.157265 | -0.053340 | -0.125976 | 0.157367 | 0.059304 | 0.050486 | 0.058070 | 0.090881 | 0.112093 | 0.036986 | 0.060994 | -0.015420 | 0.998838 | 0.999990 | 0.999959 | -0.015255 | 0.998898 | 0.998899 | 0.994902 | 0.998841 | 1.000000 | 0.999968 | 0.998902 | -0.015255 | 0.994900 | -0.225759 | 0.271487 | -0.014356 | nan | nan | -0.171300 | -0.139525 | 0.057229 | -0.218714 | -0.158228 | 0.051505 | 0.053238 | -0.041810 | -0.154234 | 0.041510 | -0.116061 | -0.028034 | 0.039509 | -0.046524 | -0.033367 | -0.178876 | -0.014874 | -0.022290 | -0.068843 | -0.063637 | -0.150846 | nan |
| FLT_ACT_QTE | nan | -0.069924 | 0.059821 | -0.072098 | -0.156286 | -0.057734 | -0.109643 | 0.158390 | 0.057410 | 0.049934 | 0.056324 | 0.081049 | 0.093985 | 0.039822 | 0.058831 | -0.022440 | 0.978222 | 0.999956 | 0.999990 | -0.015273 | 0.994021 | 0.994026 | 0.989158 | 0.978226 | 0.999968 | 1.000000 | 0.994031 | -0.015273 | 0.989160 | -0.158907 | 0.240671 | -0.012939 | nan | nan | -0.167672 | -0.141173 | 0.055543 | -0.210820 | -0.157070 | 0.059557 | 0.051031 | -0.049289 | -0.154063 | 0.036338 | -0.110506 | -0.014722 | 0.041334 | -0.044323 | -0.029640 | -0.159917 | -0.014634 | -0.038442 | -0.051910 | -0.051121 | -0.151454 | nan |
| FLT_PAI_MNT | nan | -0.071254 | 0.050263 | -0.064683 | -0.125798 | -0.052736 | -0.113444 | 0.120470 | 0.041086 | 0.036313 | 0.039353 | 0.068807 | 0.076643 | 0.033506 | 0.043910 | -0.050890 | 0.984477 | 0.998895 | 0.994043 | -0.010879 | 0.999998 | 0.999989 | 0.997210 | 0.984477 | 0.998902 | 0.994031 | 1.000000 | -0.010879 | 0.997207 | -0.167951 | 0.244773 | -0.017338 | nan | nan | -0.135135 | -0.109062 | 0.038320 | -0.183248 | -0.125965 | 0.054563 | 0.043293 | -0.040546 | -0.123592 | 0.044350 | -0.100279 | -0.015135 | 0.035101 | -0.038723 | -0.057990 | -0.139934 | -0.014533 | -0.033153 | -0.050097 | -0.074439 | -0.121418 | nan |
| FLT_DEP_MNT | nan | -0.068788 | 0.162534 | -0.060079 | -0.082227 | -0.016815 | 0.117623 | 0.093111 | 0.064879 | 0.056148 | 0.065006 | 0.091298 | 0.112704 | 0.038346 | 0.063976 | -0.048676 | -0.015656 | -0.015700 | -0.015444 | 1.000000 | -0.010932 | -0.015439 | -0.017363 | -0.015633 | -0.015255 | -0.015273 | -0.010879 | 1.000000 | -0.017334 | -0.219672 | 0.277234 | -0.018209 | nan | nan | -0.091239 | -0.136859 | 0.064822 | -0.144663 | -0.082544 | 0.013934 | 0.048019 | -0.056448 | -0.080150 | -0.007634 | -0.103553 | -0.045003 | 0.038840 | 0.020685 | -0.058781 | -0.159410 | -0.015327 | -0.036624 | -0.028462 | -0.078939 | -0.078327 | nan |
| FLT_REM_MNT | nan | -0.074956 | 0.057935 | -0.053798 | -0.133805 | -0.057391 | -0.121743 | 0.119438 | 0.035431 | 0.032298 | 0.032498 | 0.069503 | 0.073546 | 0.036482 | 0.040503 | -0.053886 | 0.980273 | 0.994872 | 0.989153 | -0.017334 | 0.997199 | 0.997225 | 0.999999 | 0.980276 | 0.994900 | 0.989160 | 0.997207 | -0.017334 | 1.000000 | -0.174066 | 0.248221 | 0.024302 | nan | nan | -0.144111 | -0.118008 | 0.030931 | -0.189737 | -0.133770 | 0.068320 | 0.047175 | -0.043673 | -0.131402 | 0.024623 | -0.091031 | -0.027218 | 0.083568 | -0.042375 | -0.048037 | -0.141843 | -0.016212 | -0.036612 | -0.055442 | -0.078030 | -0.129037 | nan |
| SOI_ANN | nan | 0.141987 | 0.003556 | -0.012132 | 0.103301 | 0.098900 | -0.035744 | -0.061372 | -0.035651 | -0.060920 | -0.043186 | -0.145779 | -0.152631 | 0.006555 | -0.028390 | -0.183808 | -0.197124 | -0.234585 | -0.158363 | -0.219672 | -0.167771 | -0.167013 | -0.173955 | -0.197188 | -0.225759 | -0.158907 | -0.167951 | -0.219672 | -0.174066 | 1.000000 | -0.836882 | -0.236550 | nan | nan | 0.130984 | 0.110916 | -0.050839 | 0.147468 | 0.099494 | 0.170433 | 0.076609 | -0.002072 | 0.102058 | 0.068205 | 0.030520 | 0.215338 | -0.219552 | -0.071283 | -0.218489 | 0.092494 | 0.062877 | -0.170258 | 0.179054 | -0.152907 | 0.096656 | nan |
| SOI_MOI | nan | -0.132200 | 0.002949 | -0.026417 | -0.166693 | -0.073706 | -0.001852 | 0.120505 | 0.103539 | 0.062635 | 0.107581 | 0.114113 | 0.154379 | 0.096024 | 0.094028 | 0.041025 | 0.258780 | 0.282571 | 0.240357 | 0.277234 | 0.244652 | 0.243571 | 0.248135 | 0.258813 | 0.271487 | 0.240671 | 0.244773 | 0.277234 | 0.248221 | -0.836882 | 1.000000 | 0.221105 | nan | nan | -0.181186 | -0.171304 | 0.117285 | -0.174483 | -0.158412 | -0.072356 | 0.016260 | -0.014126 | -0.165327 | 0.005448 | -0.079071 | -0.119931 | 0.193334 | -0.051262 | 0.056512 | -0.077975 | -0.038381 | 0.074886 | -0.126176 | 0.033161 | -0.161086 | nan |
| ASU_NAT | nan | -0.114987 | -0.016803 | 0.094896 | -0.045121 | -0.067036 | -0.042220 | 0.056729 | -0.075387 | -0.103041 | -0.071517 | 0.098313 | 0.121364 | 0.041292 | -0.083320 | -0.076530 | -0.017721 | -0.014870 | -0.013123 | -0.018209 | -0.017396 | -0.017235 | 0.024272 | -0.017697 | -0.014356 | -0.012939 | -0.017338 | -0.018209 | 0.024302 | -0.236550 | 0.221105 | 1.000000 | nan | nan | -0.054287 | -0.082529 | -0.061591 | -0.079070 | -0.045452 | 0.222914 | -0.120654 | -0.174716 | -0.043309 | -0.293163 | 0.170146 | -0.183028 | 0.797009 | 0.020973 | 0.130349 | -0.077104 | -0.016505 | 0.166141 | -0.064814 | 0.024165 | -0.041739 | nan |
| ATT_NAT | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| CPL_COD | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
| CPT_ENV_TYP | nan | -0.077016 | -0.269830 | -0.073689 | 0.946378 | 0.080789 | 0.179234 | -0.856824 | -0.184262 | -0.180600 | -0.186156 | -0.127255 | -0.019035 | -0.041918 | -0.181107 | -0.117304 | -0.112915 | -0.170117 | -0.167113 | -0.091239 | -0.134950 | -0.134535 | -0.144014 | -0.112991 | -0.171300 | -0.167672 | -0.135135 | -0.091239 | -0.144111 | 0.130984 | -0.181186 | -0.054287 | nan | nan | 1.000000 | 0.938022 | -0.183406 | 0.899524 | 0.960890 | -0.186979 | -0.139981 | 0.011887 | 0.947535 | -0.117984 | 0.106439 | -0.105679 | -0.174809 | 0.183761 | -0.127104 | 0.131114 | -0.103937 | 0.180102 | -0.080593 | -0.087206 | 0.939185 | nan |
| DRG_AFF_NAT | nan | -0.067333 | -0.261557 | -0.034981 | 0.986046 | 0.085865 | 0.114393 | -0.907529 | -0.207807 | -0.196771 | -0.210268 | -0.103793 | -0.021204 | -0.056012 | -0.203554 | -0.081809 | -0.088812 | -0.139607 | -0.141856 | -0.136859 | -0.109241 | -0.108286 | -0.118096 | -0.088728 | -0.139525 | -0.141173 | -0.109062 | -0.136859 | -0.118008 | 0.110916 | -0.171304 | -0.082529 | nan | nan | 0.938022 | 1.000000 | -0.208041 | 0.900110 | 0.983735 | -0.206462 | -0.156485 | 0.120103 | 0.985725 | -0.101199 | 0.143268 | -0.134100 | -0.201792 | 0.179865 | -0.097257 | 0.140406 | -0.077972 | 0.189644 | -0.072858 | -0.046675 | 0.984856 | nan |
| ETE_IND_TAA | nan | 0.157134 | 0.075067 | 0.156702 | -0.198692 | 0.040462 | 0.055995 | 0.398871 | 0.991975 | 0.867563 | 0.996450 | 0.329127 | 0.362642 | 0.620416 | 0.974111 | 0.153990 | 0.061164 | 0.058947 | 0.056056 | 0.064822 | 0.038499 | 0.037941 | 0.031000 | 0.061097 | 0.057229 | 0.055543 | 0.038320 | 0.064822 | 0.030931 | -0.050839 | 0.117285 | -0.061591 | nan | nan | -0.183406 | -0.208041 | 1.000000 | -0.193258 | -0.191624 | 0.585579 | 0.718276 | -0.032631 | -0.195713 | 0.422352 | -0.590008 | 0.573416 | 0.165889 | -0.305107 | 0.064335 | -0.393049 | 0.058755 | -0.199721 | 0.124535 | -0.010121 | -0.198096 | nan |
| EXO_MTF | nan | -0.096693 | -0.227204 | -0.083741 | 0.909937 | 0.061421 | 0.149524 | -0.843848 | -0.193461 | -0.198871 | -0.196354 | -0.099674 | -0.033728 | -0.075615 | -0.187761 | -0.055356 | -0.164321 | -0.218853 | -0.211277 | -0.144663 | -0.183510 | -0.182487 | -0.189887 | -0.164266 | -0.218714 | -0.210820 | -0.183248 | -0.144663 | -0.189737 | 0.147468 | -0.174483 | -0.079070 | nan | nan | 0.899524 | 0.900110 | -0.193258 | 1.000000 | 0.923646 | -0.233217 | -0.131960 | 0.189731 | 0.913830 | -0.131748 | 0.125447 | -0.165684 | -0.197997 | 0.181485 | -0.073868 | 0.118593 | -0.052008 | 0.184642 | -0.031015 | -0.014985 | 0.914951 | nan |
| MTM_NAT | nan | -0.098489 | -0.269023 | -0.056660 | 0.995109 | 0.083033 | 0.120224 | -0.902977 | -0.191354 | -0.184518 | -0.193984 | -0.098810 | -0.009143 | -0.039826 | -0.187162 | -0.090021 | -0.103924 | -0.158285 | -0.157645 | -0.082544 | -0.126153 | -0.125415 | -0.133868 | -0.103854 | -0.158228 | -0.157070 | -0.125965 | -0.082544 | -0.133770 | 0.099494 | -0.158412 | -0.045452 | nan | nan | 0.960890 | 0.983735 | -0.191624 | 0.923646 | 1.000000 | -0.218336 | -0.144170 | 0.109419 | 0.996699 | -0.147513 | 0.129680 | -0.155687 | -0.161024 | 0.201641 | -0.096659 | 0.118106 | -0.095801 | 0.186126 | -0.073342 | -0.060689 | 0.996033 | nan |
| PRS_NAT | nan | 0.124245 | 0.050044 | 0.190390 | -0.227453 | 0.024568 | 0.012538 | 0.343581 | 0.582337 | 0.501501 | 0.586986 | 0.064673 | 0.037916 | 0.338588 | 0.571510 | -0.167505 | 0.072849 | 0.053379 | 0.060368 | 0.013934 | 0.054682 | 0.054413 | 0.068373 | 0.072742 | 0.051505 | 0.059557 | 0.054563 | 0.013934 | 0.068320 | 0.170433 | -0.072356 | 0.222914 | nan | nan | -0.186979 | -0.206462 | 0.585579 | -0.233217 | -0.218336 | 1.000000 | 0.428846 | -0.276903 | -0.224674 | 0.554308 | -0.290111 | 0.734563 | 0.439213 | -0.458546 | -0.141225 | -0.171248 | 0.100443 | -0.323769 | 0.139204 | -0.213678 | -0.229369 | nan |
| PRS_PPU_SEC | nan | -0.026033 | 0.162481 | -0.021961 | -0.151952 | 0.003466 | -0.024742 | 0.297308 | 0.772311 | 0.480586 | 0.746814 | 0.177198 | 0.377829 | 0.458258 | 0.812249 | 0.128698 | 0.046569 | 0.054427 | 0.051352 | 0.048019 | 0.043416 | 0.043018 | 0.047209 | 0.046527 | 0.053238 | 0.051031 | 0.043293 | 0.048019 | 0.047175 | 0.076609 | 0.016260 | -0.120654 | nan | nan | -0.139981 | -0.156485 | 0.718276 | -0.131960 | -0.144170 | 0.428846 | 1.000000 | 0.026408 | -0.147177 | 0.325341 | -0.448700 | 0.411288 | 0.124431 | -0.328596 | 0.056002 | -0.291163 | 0.043525 | 0.003734 | 0.086462 | 0.049810 | -0.148922 | nan |
| PRS_REM_TAU | nan | -0.024588 | 0.153832 | -0.117209 | 0.116327 | -0.166727 | 0.008308 | -0.119642 | -0.040142 | -0.081902 | -0.044673 | -0.090355 | -0.117856 | 0.021088 | -0.040052 | 0.122163 | -0.034116 | -0.045744 | -0.050944 | -0.056448 | -0.041103 | -0.040301 | -0.043936 | -0.033899 | -0.041810 | -0.049289 | -0.040546 | -0.056448 | -0.043673 | -0.002072 | -0.014126 | -0.174716 | nan | nan | 0.011887 | 0.120103 | -0.032631 | 0.189731 | 0.109419 | -0.276903 | 0.026408 | 1.000000 | 0.125395 | -0.024211 | -0.003722 | -0.117160 | -0.242651 | -0.013342 | 0.055475 | 0.111450 | -0.040422 | 0.119975 | -0.136871 | 0.194894 | 0.131523 | nan |
| PRS_REM_TYP | nan | -0.091852 | -0.253344 | -0.059241 | 0.998272 | 0.064960 | 0.112224 | -0.908689 | -0.195452 | -0.187875 | -0.198067 | -0.099055 | -0.009807 | -0.042981 | -0.191217 | -0.082532 | -0.101760 | -0.154426 | -0.154781 | -0.080150 | -0.123783 | -0.123052 | -0.131496 | -0.101672 | -0.154234 | -0.154063 | -0.123592 | -0.080150 | -0.131402 | 0.102058 | -0.165327 | -0.043309 | nan | nan | 0.947535 | 0.985725 | -0.195713 | 0.913830 | 0.996699 | -0.224674 | -0.147177 | 0.125395 | 1.000000 | -0.153882 | 0.130751 | -0.161797 | -0.160077 | 0.203763 | -0.088151 | 0.116974 | -0.093421 | 0.187833 | -0.072795 | -0.052083 | 0.999057 | nan |
| PRS_PDS_QCP | nan | 0.092687 | -0.101011 | 0.043593 | -0.153620 | 0.100136 | -0.024223 | 0.190003 | 0.402265 | 0.336141 | 0.413197 | -0.028431 | -0.027386 | 0.281900 | 0.396533 | -0.216348 | 0.064833 | 0.042969 | 0.036980 | -0.007634 | 0.044575 | 0.044295 | 0.024726 | 0.064748 | 0.041510 | 0.036338 | 0.044350 | -0.007634 | 0.024623 | 0.068205 | 0.005448 | -0.293163 | nan | nan | -0.117984 | -0.101199 | 0.422352 | -0.131748 | -0.147513 | 0.554308 | 0.325341 | -0.024211 | -0.153882 | 1.000000 | -0.296663 | 0.722711 | -0.117942 | -0.489909 | -0.320033 | -0.118002 | 0.064871 | -0.255632 | 0.107103 | -0.208328 | -0.157082 | nan |
| EXE_INS_REG | nan | 0.112614 | -0.146316 | 0.370205 | 0.131643 | 0.082907 | -0.038010 | -0.255376 | -0.586419 | -0.517520 | -0.588686 | 0.025322 | -0.173709 | -0.358309 | -0.577877 | -0.073357 | -0.123119 | -0.119706 | -0.111332 | -0.103553 | -0.100703 | -0.099742 | -0.091250 | -0.123009 | -0.116061 | -0.110506 | -0.100279 | -0.103553 | -0.091031 | 0.030520 | -0.079071 | 0.170146 | nan | nan | 0.106439 | 0.143268 | -0.590008 | 0.125447 | 0.129680 | -0.290111 | -0.448700 | -0.003722 | 0.130751 | -0.296663 | 1.000000 | -0.322332 | 0.034265 | 0.220163 | 0.017002 | 0.438215 | 0.081186 | 0.120310 | 0.085378 | 0.002065 | 0.137698 | nan |
| PSE_ACT_SNDS | nan | 0.125557 | -0.100192 | 0.088690 | -0.163206 | 0.042168 | 0.104151 | 0.279823 | 0.571558 | 0.480559 | 0.572773 | -0.008715 | -0.043472 | 0.385437 | 0.563983 | -0.217146 | -0.006359 | -0.026988 | -0.013658 | -0.045003 | -0.014934 | -0.014884 | -0.027120 | -0.006497 | -0.028034 | -0.014722 | -0.015135 | -0.045003 | -0.027218 | 0.215338 | -0.119931 | -0.183028 | nan | nan | -0.105679 | -0.134100 | 0.573416 | -0.165684 | -0.155687 | 0.734563 | 0.411288 | -0.117160 | -0.161797 | 0.722711 | -0.322332 | 1.000000 | -0.073154 | -0.449116 | -0.306990 | -0.088439 | 0.124933 | -0.379687 | 0.236988 | -0.279437 | -0.169192 | nan |
| PSE_ACT_CAT | nan | -0.068182 | 0.083550 | 0.172514 | -0.162288 | -0.074140 | -0.125671 | 0.194285 | 0.165489 | 0.144548 | 0.165961 | 0.087173 | 0.104302 | 0.099364 | 0.163136 | -0.065985 | 0.036831 | 0.039187 | 0.041157 | 0.038840 | 0.035040 | 0.034872 | 0.083534 | 0.036854 | 0.039509 | 0.041334 | 0.035101 | 0.038840 | 0.083568 | -0.219552 | 0.193334 | 0.797009 | nan | nan | -0.174809 | -0.201792 | 0.165889 | -0.197997 | -0.161024 | 0.439213 | 0.124431 | -0.242651 | -0.160077 | -0.117942 | 0.034265 | -0.073154 | 1.000000 | -0.100400 | 0.148893 | -0.194791 | -0.015791 | -0.078937 | -0.043978 | -0.107156 | -0.157490 | nan |
| PSE_SPE_SNDS | nan | -0.207966 | -0.060967 | -0.047660 | 0.204765 | -0.008187 | 0.183292 | -0.197628 | -0.321487 | -0.328783 | -0.317725 | -0.106097 | -0.061827 | -0.022083 | -0.329100 | 0.029938 | -0.042952 | -0.047734 | -0.044757 | 0.020685 | -0.038848 | -0.038766 | -0.042441 | -0.042895 | -0.046524 | -0.044323 | -0.038723 | 0.020685 | -0.042375 | -0.071283 | -0.051262 | 0.020973 | nan | nan | 0.183761 | 0.179865 | -0.305107 | 0.181485 | 0.201641 | -0.458546 | -0.328596 | -0.013342 | 0.203763 | -0.489909 | 0.220163 | -0.449116 | -0.100400 | 1.000000 | 0.061945 | 0.134687 | -0.040499 | 0.213395 | 0.055589 | 0.041471 | 0.204775 | nan |
| PSE_STJ_SNDS | nan | -0.018961 | 0.182104 | 0.031786 | -0.094534 | -0.046612 | 0.132664 | 0.074562 | 0.068611 | 0.050222 | 0.064552 | 0.262754 | 0.255759 | -0.058254 | 0.074004 | 0.966801 | -0.025127 | -0.031387 | -0.030310 | -0.058781 | -0.058214 | -0.058021 | -0.048170 | -0.025047 | -0.033367 | -0.029640 | -0.057990 | -0.058781 | -0.048037 | -0.218489 | 0.056512 | 0.130349 | nan | nan | -0.127104 | -0.097257 | 0.064335 | -0.073868 | -0.096659 | -0.141225 | 0.056002 | 0.055475 | -0.088151 | -0.320033 | 0.017002 | -0.306990 | 0.148893 | 0.061945 | 1.000000 | -0.136095 | 0.163056 | 0.288022 | -0.010622 | 0.850884 | -0.082105 | nan |
| PRE_INS_REG | nan | 0.205363 | -0.080386 | 0.255953 | 0.115680 | 0.117155 | 0.071544 | -0.193108 | -0.393391 | -0.340451 | -0.394160 | -0.553581 | -0.683378 | -0.232508 | -0.387916 | -0.140572 | -0.170671 | -0.184652 | -0.159924 | -0.159410 | -0.139924 | -0.139147 | -0.141816 | -0.170665 | -0.178876 | -0.159917 | -0.139934 | -0.159410 | -0.141843 | 0.092494 | -0.077975 | -0.077104 | nan | nan | 0.131114 | 0.140406 | -0.393049 | 0.118593 | 0.118106 | -0.171248 | -0.291163 | 0.111450 | 0.116974 | -0.118002 | 0.438215 | -0.088439 | -0.194791 | 0.134687 | -0.136095 | 1.000000 | 0.092934 | 0.221841 | 0.014826 | 0.031770 | 0.111403 | nan |
| PSP_ACT_SNDS | nan | 0.109529 | -0.193300 | 0.133813 | -0.095508 | 0.275492 | 0.106614 | 0.105428 | 0.058807 | 0.050893 | 0.058921 | 0.009957 | -0.136254 | 0.034757 | 0.057988 | 0.170563 | -0.014661 | -0.015243 | -0.014789 | -0.015327 | -0.014581 | -0.014446 | -0.016238 | -0.014641 | -0.014874 | -0.014634 | -0.014533 | -0.015327 | -0.016212 | 0.062877 | -0.038381 | -0.016505 | nan | nan | -0.103937 | -0.077972 | 0.058755 | -0.052008 | -0.095801 | 0.100443 | 0.043525 | -0.040422 | -0.093421 | 0.064871 | 0.081186 | 0.124933 | -0.015791 | -0.040499 | 0.163056 | 0.092934 | 1.000000 | -0.004278 | 0.734680 | 0.149148 | -0.091579 | nan |
| PSP_ACT_CAT | nan | -0.143539 | -0.048568 | -0.032551 | 0.186715 | 0.024954 | -0.026800 | -0.228525 | -0.213266 | -0.200450 | -0.209468 | 0.223382 | 0.269603 | -0.179245 | -0.203015 | 0.286601 | -0.035591 | -0.022885 | -0.038832 | -0.036624 | -0.033277 | -0.032940 | -0.036679 | -0.035540 | -0.022290 | -0.038442 | -0.033153 | -0.036624 | -0.036612 | -0.170258 | 0.074886 | 0.166141 | nan | nan | 0.180102 | 0.189644 | -0.199721 | 0.184642 | 0.186126 | -0.323769 | 0.003734 | 0.119975 | 0.187833 | -0.255632 | 0.120310 | -0.379687 | -0.078937 | 0.213395 | 0.288022 | 0.221841 | -0.004278 | 1.000000 | -0.122612 | 0.478587 | 0.188725 | nan |
| PSP_SPE_SNDS | nan | 0.022812 | -0.143244 | 0.065442 | -0.074925 | 0.239881 | 0.043255 | 0.119309 | 0.124678 | 0.067014 | 0.123765 | 0.052335 | -0.040557 | 0.135893 | 0.124299 | 0.009841 | -0.044000 | -0.070147 | -0.051999 | -0.028462 | -0.050215 | -0.049894 | -0.055513 | -0.043988 | -0.068843 | -0.051910 | -0.050097 | -0.028462 | -0.055442 | 0.179054 | -0.126176 | -0.064814 | nan | nan | -0.080593 | -0.072858 | 0.124535 | -0.031015 | -0.073342 | 0.139204 | 0.086462 | -0.136871 | -0.072795 | 0.107103 | 0.085378 | 0.236988 | -0.043978 | 0.055589 | -0.010622 | 0.014826 | 0.734680 | -0.122612 | 1.000000 | -0.058616 | -0.069707 | nan |
| PSP_STJ_SNDS | nan | 0.056488 | 0.115207 | 0.047236 | -0.058903 | -0.017093 | 0.083133 | 0.015865 | -0.022751 | -0.028312 | -0.018934 | 0.202437 | 0.245831 | -0.088178 | -0.021683 | 0.874875 | -0.041871 | -0.063001 | -0.051819 | -0.078939 | -0.074660 | -0.074347 | -0.078161 | -0.041787 | -0.063637 | -0.051121 | -0.074439 | -0.078939 | -0.078030 | -0.152907 | 0.033161 | 0.024165 | nan | nan | -0.087206 | -0.046675 | -0.010121 | -0.014985 | -0.060689 | -0.213678 | 0.049810 | 0.194894 | -0.052083 | -0.208328 | 0.002065 | -0.279437 | -0.107156 | 0.041471 | 0.850884 | 0.031770 | 0.149148 | 0.478587 | -0.058616 | 1.000000 | -0.047088 | nan |
| TOP_PS5_TRG | nan | -0.099749 | -0.253392 | -0.053630 | 0.997691 | 0.066095 | 0.108504 | -0.910622 | -0.197841 | -0.189771 | -0.200440 | -0.088346 | -0.003033 | -0.045057 | -0.193587 | -0.077200 | -0.099788 | -0.151189 | -0.152323 | -0.078327 | -0.121679 | -0.120894 | -0.129170 | -0.099680 | -0.150846 | -0.151454 | -0.121418 | -0.078327 | -0.129037 | 0.096656 | -0.161086 | -0.041739 | nan | nan | 0.939185 | 0.984856 | -0.198096 | 0.914951 | 0.996033 | -0.229369 | -0.148922 | 0.131523 | 0.999057 | -0.157082 | 0.137698 | -0.169192 | -0.157490 | 0.204775 | -0.082105 | 0.111403 | -0.091579 | 0.188725 | -0.069707 | -0.047088 | 1.000000 | nan |
| Unnamed: 55 | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan | nan |
On a remarqué une forte corrélation entre certaines colonnes (tèes proche de 1), ce qui induit une grande liaison, ainsi en sachant cela et que nous avons à disposition un très grand nombre de colonnes nous allons nous limites à certaines colonnes choisis notamment grâce à notre observation et à la corréalation. On prend les colonnes voulus
Liste={}
ListeColonnes=['AGE_BEN_SNDS',
'ASU_NAT',
'ATT_NAT',
'BEN_CMU_TOP',
'BEN_QLT_COD',
'BEN_RES_REG',
'ETE_REG_COD',
'BEN_SEX_COD',
'DDP_SPE_COD',
'ETE_TYP_SNDS',
'SOI_MOI',
'SOI_ANN',
'PRS_NAT',
'PRS_PAI_MNT',
'PRS_PPU_SEC',
'PRS_REM_TYP',
'PSE_ACT_CAT',
'PSP_ACT_CAT' ]
ListeDef=['Tranche Age Bénéficiaire au moment des soins',
'Nature Assurance',
'Nature Accident du Travail',
'Top Bénéficiaire CMU-C',
'Qualité du Bénéficiaire',
'Région de Résidence du Bénéficiaire',
'Région Implantation Etb Exécutant',
'Sexe du Bénéficiaire',
'Discipline de Prestation Etb Exécutant',
'Type Etb Exécutant',
'Mois de Soins',
'Année de Soins',
'Nature de Prestation',
'Montant de la Dépense',
'Code Secteur Privé/Public',
'Type de Remboursement',
'Catégorie de Exécutant',
'Catégorie du Prescripteur']
for i in range(len(ListeColonnes)):
Liste[ListeColonnes[i]]=ListeDef[i]
print(Liste)
{'AGE_BEN_SNDS': 'Tranche Age Bénéficiaire au moment des soins', 'ASU_NAT': 'Nature Assurance', 'ATT_NAT': 'Nature Accident du Travail', 'BEN_CMU_TOP': 'Top Bénéficiaire CMU-C', 'BEN_QLT_COD': 'Qualité du Bénéficiaire', 'BEN_RES_REG': 'Région de Résidence du Bénéficiaire', 'ETE_REG_COD': 'Région Implantation Etb Exécutant', 'BEN_SEX_COD': 'Sexe du Bénéficiaire', 'DDP_SPE_COD': 'Discipline de Prestation Etb Exécutant', 'ETE_TYP_SNDS': 'Type Etb Exécutant', 'SOI_MOI': 'Mois de Soins', 'SOI_ANN': 'Année de Soins', 'PRS_NAT': 'Nature de Prestation', 'PRS_PAI_MNT': 'Montant de la Dépense', 'PRS_PPU_SEC': 'Code Secteur Privé/Public', 'PRS_REM_TYP': 'Type de Remboursement', 'PSE_ACT_CAT': 'Catégorie de Exécutant', 'PSP_ACT_CAT': 'Catégorie du Prescripteur'}
Nous allons maintenant et pour l'étude des différents Dataframe, nous allons prendre un échantillon de taille n de l'ensemble du dataframe, Pourquoi ? car nous disposons d'une trop groosse base de données presque 5min pour ouvrir avec pandas et encore on a dû arreter le chargement car vscode commencait à buguer :

Cette taille sera la meme pour tout les autres dataframe donc des différent mois, ici on commence par étudier le dataframe correspondant au 03/2019 (Un an vant la grosse vaque de covid en France)
path='A2019_03.csv' #Notre fichier
#Ici on va prendre un échantillon aléatoire de notre dataframe
#Sans affecter le remplacement (Reservoir Sampling)
ListeColonnes=['AGE_BEN_SNDS',
'ASU_NAT',
'ATT_NAT',
'BEN_CMU_TOP',
'BEN_QLT_COD',
'BEN_RES_REG',
'ETE_REG_COD',
'BEN_SEX_COD',
'DDP_SPE_COD',
'ETE_TYP_SNDS',
'SOI_MOI',
'SOI_ANN',
'PRS_NAT',
'PRS_PAI_MNT',
'PRS_PPU_SEC',
'PRS_REM_TYP',
'PSE_ACT_CAT',
'PSP_ACT_CAT' ]
p=0.01
#Ici on lit on prend p% des lignes grâce à skiprows et une expression lambda
df = pd.read_csv(path,sep=';',usecols=ListeColonnes,skiprows=lambda i: i>0 and random.random() > p)
df.head()
| AGE_BEN_SNDS | BEN_RES_REG | BEN_CMU_TOP | BEN_QLT_COD | BEN_SEX_COD | ... | PRS_NAT | PRS_PPU_SEC | PRS_REM_TYP | PSE_ACT_CAT | PSP_ACT_CAT | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 80 | 84 | 0 | 1 | 2 | ... | 1210 | 2 | 0 | 1 | 1 |
| 1 | 30 | 11 | 0 | 1 | 2 | ... | 1951 | 2 | 0 | 1 | 1 |
| 2 | 0 | 76 | 0 | 3 | 2 | ... | 3125 | 2 | 0 | 7 | 1 |
| 3 | 70 | 32 | 9 | 1 | 2 | ... | 1352 | 2 | 99 | 1 | 1 |
| 4 | 40 | 11 | 9 | 1 | 2 | ... | 1974 | 2 | 99 | 2 | 0 |
5 rows × 18 columns
# ON regarde la taille de notre dataframe :
print("La taille est : ",df.shape)
La taille est : (353304, 18)
On transforme notre dataframe pandas pour utiliser Pyspark
sparkdf=spark.createDataFrame(df)
Quelle est la région où le plus de benificiaire 'BEN_RES_REG' et d'éxécutant 'ETE_REG_COD' puis une comparaison des deux est réalisé.
Ensuite on prend la tranche d’age 'AGE_BEN_SNDS' qui est la plus représentée, de même que sexe 'BEN_SEX_COD'.
print("Somme des données nulles par colonne :\n")
sparkdf.select([F.count(F.when(F.col(c).isNull(), c)).alias(c) for c in sparkdf.columns]).show(truncate=False)
Somme des données nulles par colonne :
22/01/06 17:30:26 WARN TaskSetManager: Stage 55 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
+------------+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+ |AGE_BEN_SNDS|BEN_RES_REG|BEN_CMU_TOP|BEN_QLT_COD|BEN_SEX_COD|DDP_SPE_COD|ETE_REG_COD|ETE_TYP_SNDS|PRS_PAI_MNT|SOI_ANN|SOI_MOI|ASU_NAT|ATT_NAT|PRS_NAT|PRS_PPU_SEC|PRS_REM_TYP|PSE_ACT_CAT|PSP_ACT_CAT| +------------+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+ |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0 | +------------+-----------+-----------+-----------+-----------+-----------+-----------+------------+-----------+-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+
On remarque qu'on a aucune valeurs nulles, pratique pour la suite. Donc pas besoin de nettoyer en supprimant les valeurs nulles.
#Etudions la corrélation entre les regions des beneficiares et des exécutant :
corelationr=sparkdf.stat.corr("BEN_RES_REG","ETE_REG_COD")
print("La corrélation est : ",corelationr)
RegBen=sparkdf.select("BEN_RES_REG")
RegExe=sparkdf.select("ETE_REG_COD")
22/01/06 17:30:27 WARN TaskSetManager: Stage 58 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
La corrélation est : 0.17052312124152252
#Avec une faible corrélation dans notre échantillon passons donc à
#l'étude des regions des beneficiaires
#Partie sur les region Bénéficiares :
#On va creer un dataframe composé du nombre associé à chaque région
d=sparkdf.groupby('BEN_RES_REG').count()
pandasDF = d.toPandas()
#On trie par le nombre (count) et on affiche sous forme d'un tableau de gradient :
group = pandasDF.groupby('BEN_RES_REG')['count'].sum().reset_index()
pandasDF.sort_values(by='count', ascending=False).reset_index(drop=True).style.background_gradient(subset='count', cmap='YlOrRd')
22/01/06 17:30:27 WARN TaskSetManager: Stage 60 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
| BEN_RES_REG | count | |
|---|---|---|
| 0 | 11 | 42187 |
| 1 | 44 | 33258 |
| 2 | 84 | 33178 |
| 3 | 93 | 32499 |
| 4 | 76 | 32153 |
| 5 | 75 | 29135 |
| 6 | 32 | 27506 |
| 7 | 99 | 20245 |
| 8 | 28 | 19218 |
| 9 | 52 | 18899 |
| 10 | 27 | 18605 |
| 11 | 24 | 17867 |
| 12 | 53 | 17857 |
| 13 | 5 | 10697 |
#Avec une faible corrélation dans notre échantillon passons donc à
#l'étude des regions des executant
#Partie sur les region executant :
#On va creer un dataframe composé du nombre associé à chaque région
d=sparkdf.groupby('ETE_REG_COD').count()
pandasDF = d.toPandas()
#On trie par le nombre (count) et on affiche sous forme d'un tableau de gradient :
group = pandasDF.groupby('ETE_REG_COD')['count'].sum().reset_index()
pandasDF.sort_values(by='count', ascending=False).reset_index(drop=True).style.background_gradient(subset='count', cmap='YlOrRd')
22/01/06 17:30:28 WARN TaskSetManager: Stage 63 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
| ETE_REG_COD | count | |
|---|---|---|
| 0 | 99 | 292903 |
| 1 | 11 | 10624 |
| 2 | 93 | 6335 |
| 3 | 84 | 6323 |
| 4 | 44 | 6049 |
| 5 | 76 | 5874 |
| 6 | 75 | 4940 |
| 7 | 32 | 4793 |
| 8 | 28 | 3177 |
| 9 | 52 | 2943 |
| 10 | 53 | 2881 |
| 11 | 27 | 2725 |
| 12 | 24 | 2573 |
| 13 | 5 | 1164 |
On ouvre le fichier excel contenant les données nécessaire sur les différentes colonnes et on récupère la liste de toutes ses colonnes.
workbook = xlrd.open_workbook('Lexique_open-DAMIR.xls')
SheetNameList = workbook.sheet_names()
listedescategories=[]
for i in np.arange(len(SheetNameList)):
listedescategories.append(SheetNameList[i])
d1=sparkdf.groupby('BEN_RES_REG').count()
d2=sparkdf.groupby('ETE_REG_COD').count()
pandasDF1 = d1.toPandas()
pandasDF2 = d2.toPandas()
data = pandasDF1.drop(list(filter(lambda x : 'var_' in x,pandasDF1.columns)),axis=1).copy()
data.sample()
22/01/06 17:30:28 WARN TaskSetManager: Stage 66 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB. 22/01/06 17:30:29 WARN TaskSetManager: Stage 69 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
| BEN_RES_REG | count | |
|---|---|---|
| 7 | 11 | 42187 |
#Affichons cela sur un graphique les deux comparaison afin d'avoir une meilleure vue d'ensembles :
d1=sparkdf.groupby('BEN_RES_REG').count()
d2=sparkdf.groupby('ETE_REG_COD').count()
pandasDF1 = d1.toPandas()
pandasDF2 = d2.toPandas()
#On rename la colonne car ce sont les memes regions mais pour étudier on a besion d'un seul nom de colonne
pandasDF2=pandasDF2.rename(columns={'ETE_REG_COD':'BEN_RES_REG'})
pandasDF1['hue']='BEN_RES_REG'
pandasDF2['hue']='ETE_REG_COD'
res=pd.concat([pandasDF1,pandasDF2])
sns.barplot(x='BEN_RES_REG',y='count',data=res,hue='hue')
plt.show()
22/01/06 17:30:29 WARN TaskSetManager: Stage 72 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB. 22/01/06 17:30:30 WARN TaskSetManager: Stage 75 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
On remarque une valeur extreme pour les regions où les éxécutant de la demande se trouvent, nous allons l'enlever pour plus de visibilité, mais on peut en conclure que lors d'une demande à l'assurance maladie, les éxécutant n'indique pas leurs régions d'origine ou bien se trouvent à l'étranger mais au vu d'un nombre très grand la premiere raison est certainement la bonne. Après le deuxieme graphique nous allons montrer grâce au fichier execel que signifie ces valeurs (5,11,....,99)
#Affichons cela sur un graphique les deux comparaison afin d'avoir une meilleure vue d'ensembles :
d1=sparkdf.groupby('BEN_RES_REG').count()
d2=sparkdf.groupby('ETE_REG_COD').count()
print("1 : ",d1.columns)
print("2 : ",d2.columns)
d22=d2.filter("count<=100000")
pandasDF1 = d1.toPandas()
pandasDF2 = d22.toPandas()
print("3 : ",pandasDF1.columns)
print("4 : ",pandasDF2.columns)
#On rename la colonne car ce sont les memes regions mais pour étudier on a besion d'un seul nom de colonne
pandasDF2=pandasDF2.rename(columns={'ETE_REG_COD':'BEN_RES_REG'})
pandasDF1['hue']='BEN_RES_REG'
pandasDF2['hue']='ETE_REG_COD'
res=pd.concat([pandasDF1,pandasDF2])
sns.barplot(x='BEN_RES_REG',y='count',data=res,hue='hue')
plt.show()
1 : ['BEN_RES_REG', 'count'] 2 : ['ETE_REG_COD', 'count']
22/01/06 17:30:30 WARN TaskSetManager: Stage 78 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB. 22/01/06 17:30:31 WARN TaskSetManager: Stage 81 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
3 : Index(['BEN_RES_REG', 'count'], dtype='object') 4 : Index(['ETE_REG_COD', 'count'], dtype='object')
Une meilleure visibilité :
reg = { 5:"Régions et Départements d'outre-mer", 11:"Ile-de-France", 24: "Centre-Val de Loire", 27: "Bourgogne-Franche-Comté", 28: "Normandie", 32: "Hauts-de-France - Nord-Pas-de-Calais-Picardie", 44: "Grand Est", 52: "Pays de la Loire", 53: "Bretagne", 75: "Aquitaine-Limousin-Poitou-Charentes", 76: "Languedoc-Roussillon-Midi-Pyrénées", 84: "Auvergne-Rhône-Alpes", 93: "Provence-Alpes-Côte d'Azur et Corse",99: "Inconnu"}
data=df.copy()
#Affichons cela sur un graphique les deux comparaison afin d'avoir une meilleure vue d'ensembles :
dtest=df.groupby(['BEN_RES_REG']).size().reset_index(name='count')
dtest2=df.groupby(['ETE_REG_COD']).size().reset_index(name='count')
dtest22=dtest2[dtest2['count']<=100000]
pandasDF1 = dtest
pandasDF2 = dtest22 #On rename la colonne car ce sont les memes regions mais pour étudier on a besion d'un seul nom de colonne
pandasDF2=pandasDF2.rename(columns={'ETE_REG_COD':'BEN_RES_REG'})
pandasDF1['hue']='BEN_RES_REG'
pandasDF2['hue']='ETE_REG_COD'
res=pd.concat([pandasDF1,pandasDF2])
res['reg']= res['BEN_RES_REG'].map(reg)
fig=px.bar(data_frame=res,x='reg',y='count',color='count')
fig.show()
On remarque que ce soit pour les éxécutant des demandes (médecin, chirurgien...) ou les bénéficiaires, c'est la région 11 qui a le plus de demandes ou bénéficiaires. Regardons sur l'excel à quoi correspond ces regions :
worksheet = workbook.sheet_by_name(SheetNameList[listedescategories.index('BEN_RES_REG')])
num_rows = worksheet.nrows
num_cells = worksheet.ncols
curr_row = 0
while curr_row < num_rows:
row = worksheet.row(curr_row)
curr_cell = 0
l=[]
while curr_cell < num_cells:
cell_type = worksheet.cell_type(curr_row, curr_cell)
cell_value = worksheet.cell_value(curr_row, curr_cell)
l.append(cell_value)
curr_cell += 1
if type(l[0])==float:
print('Numéro de région :',int(l[0]),'Nom de région : ',l[1])
curr_row += 1
Numéro de région : 5 Nom de région : Régions et Départements d'outre-mer Numéro de région : 11 Nom de région : Ile-de-France Numéro de région : 24 Nom de région : Centre-Val de Loire Numéro de région : 27 Nom de région : Bourgogne-Franche-Comté Numéro de région : 28 Nom de région : Normandie Numéro de région : 32 Nom de région : Hauts-de-France - Nord-Pas-de-Calais-Picardie Numéro de région : 44 Nom de région : Grand Est Numéro de région : 52 Nom de région : Pays de la Loire Numéro de région : 53 Nom de région : Bretagne Numéro de région : 75 Nom de région : Aquitaine-Limousin-Poitou-Charentes Numéro de région : 76 Nom de région : Languedoc-Roussillon-Midi-Pyrénées Numéro de région : 84 Nom de région : Auvergne-Rhône-Alpes Numéro de région : 93 Nom de région : Provence-Alpes-Côte d'Azur et Corse Numéro de région : 99 Nom de région : Inconnu
C'est la région ile de france, ce qui explique qu'elle soit en première place car la région compte 12 millions d'habitants dans son aire urbaine soit 1/6 environ de la population française (approx. 66 millions)
Deuxième partie de l'étude
On prend la tranche d’age 'AGE_BEN_SNDS' qui est la plus représentée, de même que sexe 'BEN_SEX_COD'.
Ici, on reste toujours, bien sûr, sur les bénéficiares.
data=df.copy()
Graphique : On déterminer le pourcentage d'hommes et de femmes de notre échantillon
sums = df.AGE_BEN_SNDS.groupby(df.BEN_SEX_COD).sum()
plt.axis('equal')
plt.pie(sums, labels=sums.index, autopct = '%1.1f %%' , shadow = True ,startangle=90,colors = ['tab:cyan' , 'tab:olive'],textprops={'fontsize': 14,'color':"w"})
plt.title("Sex Rate",fontdict={'fontsize':20, 'color': 'blue', 'fontweight':'bold'})
labels=["0 : INCONNU OU PERSONNE MORALE SANS CIVILITE","1 : FEMININ","2 : MASCULIN","9 : VALEUR INCONNUE"]
plt.legend(labels, loc="best")
plt.show()
Densité Oberservée A part à un age inconnu (99 la courbe qu'on observe à 100 ans environ) domminée par les femmes, le reste des tranche d'âge se sont les hommes. AVec nitamment que ce soit les hommes et les femmes dans la trache d'age de la soixante un très fort pic, pourquoi ? car à cet age-là le corps humain devient de plus en fragile etc et donc propice à plus souvent être malade pou blessé.
Maintenant pourquoi aux alentours de 99 (age inconnu) est dominée par les femmes ? Depuis les années 2000, les immigrés en France sont majoritairement des femmes et peut-etre que certains ne déclare pas leurs age pour X raisons (non-connaissances etc..), aussi la situation des sdf peut aussi l'expliquer. On pourrait aussi d'autres raisons.
sns.displot(data = data , x = 'AGE_BEN_SNDS' , hue = 'BEN_SEX_COD' , fill = True , kind = 'kde' , legend = False , alpha = 0.1)
plt.legend(labels = ['1' , '2'])
plt.title('Customers age distribution')
plt.show()
Voici les différents types de tranche d'âge :
worksheet = workbook.sheet_by_name(SheetNameList[listedescategories.index('AGE_BEN_SNDS')])
num_rows = worksheet.nrows
num_cells = worksheet.ncols
curr_row = 0
while curr_row < num_rows:
row = worksheet.row(curr_row)
curr_cell = 0
l=[]
while curr_cell < num_cells:
cell_type = worksheet.cell_type(curr_row, curr_cell)
cell_value = worksheet.cell_value(curr_row, curr_cell)
l.append(cell_value)
curr_cell += 1
if type(l[0])==float:
print('Numéro Asscoié :',int(l[0]),'Tranche âge : ',l[1])
curr_row += 1
Numéro Asscoié : 0 Tranche âge : 0-19 ANS Numéro Asscoié : 20 Tranche âge : 20 - 29 ANS Numéro Asscoié : 30 Tranche âge : 30 - 39 ANS Numéro Asscoié : 40 Tranche âge : 40 - 49 ANS Numéro Asscoié : 50 Tranche âge : 50 - 59 ANS Numéro Asscoié : 60 Tranche âge : 60 - 69 ANS Numéro Asscoié : 70 Tranche âge : 70 - 79 ANS Numéro Asscoié : 80 Tranche âge : 80 ANS ET + Numéro Asscoié : 99 Tranche âge : AGE INCONNU
Pour finir cette Première Étude :
Montrons sur une carte de la France, la tranche d'âge la plus représentés par région (toujours pour les bénéficiaires)
La carte va s'afficher sur votre navigateur ou bien sur le notebook.
L'âge moyen en France se situe autour de la quarantaine
pyo.init_notebook_mode()
viz4 = data[["AGE_BEN_SNDS", "BEN_SEX_COD","BEN_RES_REG"]].dropna()
viz4 = viz4.groupby(["AGE_BEN_SNDS","BEN_SEX_COD"])
viz5=viz4.apply(lambda x:x)
viz5.to_csv("Bénéficiaires.csv")
dfMap=pd.read_csv(r"Bénéficiaires.csv")
#On récupère le fichier json contenant toutes les régions
request2 = urlopen("https://france-geojson.gregoiredavid.fr/repo/regions.geojson")
frmap = json.load(request2)
reg_id_map={}
for feature in frmap['features']:
feature['id']=feature['properties']['code']
reg_id_map[feature['properties']['nom']]=feature['id']
#On enleve la colone index
dfMap = dfMap.iloc[: , 1:]
#Supprimons le 99 car c'est region inconnu
dfMap.drop(dfMap[dfMap['BEN_RES_REG'] == 99].index, inplace = True)
grouped_df=dfMap.groupby('BEN_RES_REG')
mean_df = grouped_df.mean()
dfMap=mean_df.reset_index()
fig=px.choropleth(dfMap,locations='BEN_RES_REG', geojson=frmap,
color='AGE_BEN_SNDS',title='Age moyen des bénéficiaires par région française')
fig.update_geos(fitbounds="locations", visible=False)
fig.show()
Maintenant, regardons le nombre de soin remboursé à cause d'un accident du travail 'ATT_NAT'
Ensuite on prend la nature des prestation 'PRS_NAT' les plus représentés et ainsi la catégorie des prescripteurs PSP_ACT_CAT les plus représentés. Ici, le but de montré qu'elles sont les prestation les plus réprésentés mais aussi de mettre en évidence qui sont les prescipteurs qui font le plus de demandes (ordonnances...).
Enfin, nous allons aussi nous attarder sur les perssonnes possédant la CMU 'BEN_CMU_TOP' car la CMU complémentaire offre aux personnes à faibles revenus une assurance santé gratuite. Ainsi, le but est de montrer si les personnes à faible revenus sont plus soumis au danger d'etre malade etc mais aussi déterminer le prix moyen que cela coute 'PRS_PAI_MNT' et le comparé à la moyenne de tout l'échantillon.
#On regarde les accident du travail :
d=sparkdf.groupby('ATT_NAT').count()
pandasDF = d.toPandas()
#On trie par le nombre (count) et on affiche sous forme d'un tableau de gradient :
group = pandasDF.groupby('ATT_NAT')['count'].sum().reset_index()
pandasDF.sort_values(by='count', ascending=False).reset_index(drop=True).style.background_gradient(subset='count', cmap='YlOrRd')
22/01/06 17:30:38 WARN TaskSetManager: Stage 84 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
| ATT_NAT | count | |
|---|---|---|
| 0 | 0 | 353175 |
| 1 | 1 | 69 |
| 2 | 3 | 40 |
| 3 | 2 | 20 |
worksheet = workbook.sheet_by_name(SheetNameList[listedescategories.index('ATT_NAT')])
num_rows = worksheet.nrows
num_cells = worksheet.ncols
curr_row = 0
while curr_row < num_rows:
row = worksheet.row(curr_row)
curr_cell = 0
l=[]
while curr_cell < num_cells:
cell_type = worksheet.cell_type(curr_row, curr_cell)
cell_value = worksheet.cell_value(curr_row, curr_cell)
l.append(cell_value)
curr_cell += 1
if type(l[0])==float:
print('Numéro Asscoié :',int(l[0]),'Catégorie : ',l[1])
curr_row += 1
Numéro Asscoié : 0 Catégorie : SANS OBJET Numéro Asscoié : 1 Catégorie : ACCIDENT DU TRAVAIL Numéro Asscoié : 2 Catégorie : MALADIE PROFESSIONNELLE Numéro Asscoié : 3 Catégorie : ACCIDENT DU TRAJET Numéro Asscoié : 9 Catégorie : VALEUR INCONNUE
On remarque peu de personnes ont fait l'objet d'un accident du travail, cependant beaucoup de demande ne font pas apparaitre l'objet cela peut signnifier deux choses soit : le bénéficiaire n'a pas eu un accident au travail soit le prescripteurs ou exécutant n'a pas fait apparaitre l'objet. On en conclu aussi une grosse erreur pourquoi ? dans une étude données il faut etre le plus précis et ici la précision manque au rendez-vous. Il faudrait apparaitre plus de catégories ou alors obligés les prescipreutr ou éxécutant à l'indiqué.
#On regarde la nature des prestation :
d=sparkdf.groupby('PRS_NAT').count()
d=d.filter("count>=5000")
pandasDF = d.toPandas()
#On trie par le nombre (count) et on affiche sous forme d'un tableau de gradient :
group = pandasDF.groupby('PRS_NAT')['count'].sum().reset_index()
pandasDF.sort_values(by='count', ascending=False).reset_index(drop=True).style.background_gradient(subset='count', cmap='YlOrRd')
22/01/06 17:30:40 WARN TaskSetManager: Stage 87 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
| PRS_NAT | count | |
|---|---|---|
| 0 | 1952 | 18283 |
| 1 | 3386 | 16836 |
| 2 | 3364 | 16341 |
| 3 | 3313 | 16292 |
| 4 | 3111 | 14776 |
| 5 | 3211 | 11529 |
| 6 | 1972 | 10861 |
| 7 | 1352 | 10650 |
| 8 | 1976 | 10094 |
| 9 | 1112 | 9911 |
| 10 | 3366 | 9270 |
| 11 | 1110 | 8797 |
| 12 | 1951 | 8565 |
| 13 | 1351 | 7999 |
| 14 | 1126 | 7913 |
| 15 | 3116 | 7843 |
| 16 | 1842 | 7824 |
| 17 | 3385 | 7789 |
| 18 | 3312 | 7484 |
| 19 | 3125 | 6359 |
| 20 | 3380 | 5324 |
| 21 | 1103 | 5171 |
maxi=pandasDF.sort_values(by='count', ascending=False).reset_index(drop=True)
maxipos=maxi["PRS_NAT"][0]
worksheet = workbook.sheet_by_name(SheetNameList[listedescategories.index('PRS_NAT')])
num_rows = worksheet.nrows
num_cells = worksheet.ncols
curr_row = 0
while curr_row < num_rows:
row = worksheet.row(curr_row)
curr_cell = 0
l=[]
while curr_cell < num_cells:
cell_type = worksheet.cell_type(curr_row, curr_cell)
cell_value = worksheet.cell_value(curr_row, curr_cell)
l.append(cell_value)
curr_cell += 1
if type(l[0])==float and l[0]==maxipos:
print('La nature de prestation la plus présente est donc : ','Numéro Asscoié :',int(l[0]),'Nature Prestation : ',l[1])
curr_row += 1
La nature de prestation la plus présente est donc : Numéro Asscoié : 1952 Nature Prestation : PARTICIPATION FORFAITAIRE TIERS PAYANT
#On regarde les catégories de prescripteur :
d=sparkdf.groupby('PSP_ACT_CAT').count()
pandasDF = d.toPandas()
#On trie par le nombre (count) et on affiche sous forme d'un tableau de gradient :
group = pandasDF.groupby('PSP_ACT_CAT')['count'].sum().reset_index()
pandasDF.sort_values(by='count', ascending=False).reset_index(drop=True).style.background_gradient(subset='count', cmap='YlOrRd')
22/01/06 17:30:41 WARN TaskSetManager: Stage 90 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
| PSP_ACT_CAT | count | |
|---|---|---|
| 0 | 1 | 183881 |
| 1 | 0 | 128521 |
| 2 | 99 | 26263 |
| 3 | 4 | 8928 |
| 4 | 9 | 2426 |
| 5 | 5 | 1766 |
| 6 | 6 | 724 |
| 7 | 2 | 337 |
| 8 | 8 | 311 |
| 9 | 7 | 143 |
| 10 | 3 | 4 |
maxi=pandasDF.sort_values(by='count', ascending=False).reset_index(drop=True)
maxipos=maxi["PSP_ACT_CAT"][0]
worksheet = workbook.sheet_by_name(SheetNameList[listedescategories.index('PSP_ACT_CAT')])
num_rows = worksheet.nrows
num_cells = worksheet.ncols
curr_row = 0
while curr_row < num_rows:
row = worksheet.row(curr_row)
curr_cell = 0
l=[]
while curr_cell < num_cells:
cell_type = worksheet.cell_type(curr_row, curr_cell)
cell_value = worksheet.cell_value(curr_row, curr_cell)
l.append(cell_value)
curr_cell += 1
if type(l[0])==float and l[0]==maxipos:
print('La catégorie de prescripteur la plus présente est donc : ','Numéro Asscoié :',int(l[0]),'Nature Prescripteur : ',l[1])
curr_row += 1
La catégorie de prescripteur la plus présente est donc : Numéro Asscoié : 1 Nature Prescripteur : MEDECIN
Maintenant, passons la dernière partie de cette deuxième étude.
#On regarde le nombre de CMU :
d=sparkdf.groupby('BEN_CMU_TOP').count()
d=d.filter("BEN_CMU_TOP==1")
pandasDF = d.toPandas()
#On trie par le nombre (count) et on affiche sous forme d'un tableau de gradient :
group = pandasDF.groupby('BEN_CMU_TOP')['count'].sum().reset_index()
pandasDF.sort_values(by='count', ascending=False).reset_index(drop=True).style.background_gradient(subset='count', cmap='YlOrRd')
print("Il y'a : ",pandasDF["count"][0], " bénéficiaires ayant la CMU")
worksheet = workbook.sheet_by_name(SheetNameList[listedescategories.index('BEN_CMU_TOP')])
num_rows = worksheet.nrows
num_cells = worksheet.ncols
curr_row = 0
while curr_row < num_rows:
row = worksheet.row(curr_row)
curr_cell = 0
l=[]
while curr_cell < num_cells:
cell_type = worksheet.cell_type(curr_row, curr_cell)
cell_value = worksheet.cell_value(curr_row, curr_cell)
l.append(cell_value)
curr_cell += 1
if type(l[0])==float:
print('Numéro Asscoié :',int(l[0]),'Catégorie : ',l[1])
curr_row += 1
22/01/06 17:30:41 WARN TaskSetManager: Stage 93 contains a task of very large size (2069 KiB). The maximum recommended task size is 1000 KiB.
Il y'a : 29456 bénéficiaires ayant la CMU Numéro Asscoié : 0 Catégorie : Non bénéficiaire de la C2S Numéro Asscoié : 1 Catégorie : Bénéficiaire de la C2S Numéro Asscoié : 2 Catégorie : SANS OBJET (PE MSA) Numéro Asscoié : 9 Catégorie : VALEUR INCONNUE
pyo.init_notebook_mode()
#On regarde Montant dépensés :
viz3=df[['PRS_PAI_MNT','BEN_CMU_TOP']]
#viz3 = viz3[viz3["BEN_CMU_TOP"]==1]
fig = go.Figure(data=[go.Box(x=viz3["BEN_CMU_TOP"],y=viz3["PRS_PAI_MNT"])])
fig.update_layout(yaxis_range=[-1e2,1e6], title_text="Representation des montant dépensés")
fig.show()
Sur la figure ci-dessus, vous pourrez voir, le median, montant maximum ect envoyé à l'assurance maladie :
Petit rappel :
Numéro Asscoié : 0 Catégorie : Non bénéficiaire de la C2S
Numéro Asscoié : 1 Catégorie : Bénéficiaire de la C2S
Numéro Asscoié : 2 Catégorie : SANS OBJET (PE MSA)
Numéro Asscoié : 9 Catégorie : VALEUR INCONNUE
Maintenant, montrons les régions 'BEN_RES_REG' (régions de résidence des bénéficiaires) les plus dépensiaires en moyenne : 'PRS_PAI_MNT'. Nous regarderons aussi les montant remboursés : PRS_REM_TYP.
#PRS_REM_MNT: Montant Versé/Remboursé
# rajouter cette colonne
reg = { 5:"Régions et Départements d'outre-mer", 11:"Ile-de-France", 24: "Centre-Val de Loire", 27: "Bourgogne-Franche-Comté", 28: "Normandie", 32: "Hauts-de-France - Nord-Pas-de-Calais-Picardie", 44: "Grand Est", 52: "Pays de la Loire", 53: "Bretagne", 75: "Aquitaine-Limousin-Poitou-Charentes", 76: "Languedoc-Roussillon-Midi-Pyrénées", 84: "Auvergne-Rhône-Alpes", 93: "Provence-Alpes-Côte d'Azur et Corse",99: "Inconnu"}
data=df.copy()
viz1=data[["PRS_PAI_MNT", "PRS_REM_TYP","BEN_RES_REG"]].dropna()
vf_type = viz1.groupby(["BEN_RES_REG"]).mean().sort_values("PRS_PAI_MNT",ascending=False)
vf_type = vf_type.sort_values("BEN_RES_REG")
vf_type['region']= vf_type.index.map(reg)
fig = px.bar(vf_type,x = 'region',y = vf_type["PRS_PAI_MNT"])
fig.update_layout(title_text="Les moyennes des Paiements dépensés par régions ")
fig.show()
#2eme graphe
viz1=data[["BEN_RES_REG","PRS_PAI_MNT", "PRS_REM_TYP"]].dropna()
vf_type = viz1.groupby(["BEN_RES_REG"]).mean().sort_values("PRS_REM_TYP",ascending=False)
vf_type = vf_type.sort_values("BEN_RES_REG")
vf_type['region']= vf_type.index.map(reg)
fig2 = px.bar(vf_type,x = 'region',y = vf_type["PRS_REM_TYP"],log_y = True)
fig2.update_layout(title_text="Les moyennes des Paiements remboursés par régions ")
fig2.show()
Pour conclure cette dernière étude sur un mois, on remarque une certaine corrélation sur certaines régions.
Passons à la seconde partie du projet, l'étude de plusieurs mois sur l'année de 2019 et 2020, nous allons aussi faire dans la troisième partie une corrélation avec un dataset sur le covid-19 et voir si par exemple l'age est un facteur (si la moyenne de l'age a augmenté et que de meme pour le covid)
Étudions si le sexe, l'age moyen et les montant dépensés en moyenne pour cette seconde partie :
per=0.0005
#Ici on lit on prend p% des lignes grâce à skiprows et une expression lambda
dff1 = pd.read_csv('A2019_01.csv',sep=';',usecols=ListeColonnes,skiprows=lambda i: i>0 and random.random() > per)
per=0.0005
dff2 = pd.read_csv('A2019_03.csv',sep=';',usecols=ListeColonnes,skiprows=lambda i: i>0 and random.random() > per)
per=0.0005
dff3 = pd.read_csv('A2019_08.csv',sep=';',usecols=ListeColonnes,skiprows=lambda i: i>0 and random.random() > per)
per=0.0005
dff4 = pd.read_csv('A202002.csv',sep=';',usecols=ListeColonnes,skiprows=lambda i: i>0 and random.random() > per)
per=0.0005
dff5 = pd.read_csv('A202004.csv',sep=';',usecols=ListeColonnes,skiprows=lambda i: i>0 and random.random() > per)
frames = [dff1, dff2, dff3,dff4,dff5]
dfF=pd.concat(frames)
#print(df.shape)
dfF.shape
#data=df2.copy()
(80152, 18)
dfF.head()
| AGE_BEN_SNDS | BEN_RES_REG | BEN_CMU_TOP | BEN_QLT_COD | BEN_SEX_COD | ... | PRS_NAT | PRS_PPU_SEC | PRS_REM_TYP | PSE_ACT_CAT | PSP_ACT_CAT | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 80 | 53 | 9 | 1 | 2 | ... | 3365 | 2 | 99 | 2 | 1 |
| 1 | 60 | 84 | 9 | 1 | 2 | ... | 3111 | 2 | 99 | 6 | 1 |
| 2 | 80 | 93 | 9 | 1 | 1 | ... | 3211 | 2 | 99 | 3 | 1 |
| 3 | 50 | 99 | 9 | 1 | 2 | ... | 1952 | 1 | 99 | 0 | 0 |
| 4 | 60 | 44 | 0 | 1 | 1 | ... | 3122 | 2 | 0 | 7 | 0 |
5 rows × 18 columns
data=dfF.copy()
Maintenant regardons l'age moyen sur ces 5 mois.
viz4 = data[["AGE_BEN_SNDS", "BEN_SEX_COD","BEN_RES_REG"]].dropna()
viz4 = viz4.groupby(["AGE_BEN_SNDS","BEN_SEX_COD"])
viz5=viz4.apply(lambda x:x)
viz5.to_csv("Bénéficiaires2.csv")
dfMap=pd.read_csv(r"Bénéficiaires2.csv")
#On récupère le fichier json contenant toutes les régions
request2 = urlopen("https://france-geojson.gregoiredavid.fr/repo/regions.geojson")
frmap = json.load(request2)
reg_id_map={}
for feature in frmap['features']:
feature['id']=feature['properties']['code']
reg_id_map[feature['properties']['nom']]=feature['id']
#On enleve la colone index
dfMap = dfMap.iloc[: , 1:]
#Supprimons le 99 car c'est region inconnu
dfMap.drop(dfMap[dfMap['BEN_RES_REG'] == 99].index, inplace = True)
grouped_df=dfMap.groupby('BEN_RES_REG')
mean_df = grouped_df.mean()
dfMap=mean_df.reset_index()
fig=px.choropleth(dfMap,locations='BEN_RES_REG', geojson=frmap,
color='AGE_BEN_SNDS',title='Age moyen des bénéficiaires par région française sur 5 mois : 01/2019-03/2019-08/2019-02/2020-04/2020')
fig.update_geos(fitbounds="locations", visible=False)
fig.show()
On remarque l'âge moyen est approximativement le même, que sur la carte plus haut concernant le mois de mars 2019. La tranche moyenne tourne autour de la quarantaine. Ce qui montre quelques soit le mois, les quarantenaire sont trés présent (ça peut aussi dire dans un cas extrême que y'a beaucoup de jeunes et beacoup de vieux mais comme c'est un cas absurde nous allons l'enlever)
sums = data.AGE_BEN_SNDS.groupby(data.BEN_SEX_COD).sum()
plt.axis('equal')
plt.pie(sums, labels=sums.index, autopct = '%1.1f %%' , shadow = True ,startangle=90,colors = ['tab:cyan' , 'tab:olive'],textprops={'fontsize': 14,'color':"w"})
plt.title("Sex Rate",fontdict={'fontsize':20, 'color': 'blue', 'fontweight':'bold'})
labels=["0 : INCONNU OU PERSONNE MORALE SANS CIVILITE","1 : FEMININ","2 : MASCULIN","9 : VALEUR INCONNUE"]
plt.legend(labels, loc="best")
plt.show()
De même que l'âge, le sexe est toujours aussi représenté de la même manière, avec un pourcentage d'hommes plus élevés. Au 1er janvier 2019, il y a 51,5% de femmes au sein de la population française parmi 66,9 millions de personnes vivant en France (inclus Mayotte). On remarque ce n'est pas représentés ici, cela peut signifier que les hommes sont plus propice au maladie, accident, etc...
Passons à l'étude des Paiments dépensés et remboursés par region sur ces 5 mois.
#1er graphe
pyo.init_notebook_mode()
reg = { 5:"Régions et Départements d'outre-mer", 11:"Ile-de-France", 24: "Centre-Val de Loire", 27: "Bourgogne-Franche-Comté", 28: "Normandie", 32: "Hauts-de-France - Nord-Pas-de-Calais-Picardie", 44: "Grand Est", 52: "Pays de la Loire", 53: "Bretagne", 75: "Aquitaine-Limousin-Poitou-Charentes", 76: "Languedoc-Roussillon-Midi-Pyrénées", 84: "Auvergne-Rhône-Alpes", 93: "Provence-Alpes-Côte d'Azur et Corse",99: "Inconnu"}
viz1=data[["PRS_PAI_MNT", "PRS_REM_TYP","BEN_RES_REG"]].dropna()
vf_type = viz1.groupby(["BEN_RES_REG"]).mean().sort_values("PRS_PAI_MNT",ascending=False)
vf_type = vf_type.sort_values("BEN_RES_REG")
vf_type['region']= vf_type.index.map(reg)
fig = px.bar(vf_type,x = 'region',y = vf_type["PRS_PAI_MNT"])
fig.update_layout(title_text="Les moyennes des Paiements dépensés par régions ")
fig.show()
#2eme graphe
viz1=data[["BEN_RES_REG","PRS_PAI_MNT", "PRS_REM_TYP"]].dropna()
vf_type = viz1.groupby(["BEN_RES_REG"]).mean().sort_values("PRS_REM_TYP",ascending=False)
vf_type = vf_type.sort_values("BEN_RES_REG")
vf_type['region']= vf_type.index.map(reg)
fig2 = px.bar(vf_type,x = 'region',y = vf_type["PRS_REM_TYP"],log_y = True)
fig2.update_layout(title_text="Les moyennes des Paiements remboursés par régions ")
fig2.show()
Grand changement par rapoort aux études précédentes, on remarque que la région Ile-de-France (11) dépasse toutes les regions sur la moyenne des paiements dépensés, de plus de nombreuses régions dépassent leurs moyennes précédentes. Pourquoi ? deux mois de notre dataset concerne le début de l'épidemie en France, or, l'ile de france est la region avec le plus d'habitants et 2 aéroports de classe internationales, ainsi elle a était la première touché, or les cout de soins des hopitaux pour détections covid et soins ect, sont excessivement chère ce qui fait gonflé la moyenne. Contrairement à une opération chirurgicale, l'hospitalisation pour Covid-19 ne permet pas de bénéficier d'une prise en charge des soins à 100%. Le reste à charge moyen dans les hôpitaux parisiens s'élève à 1.500 euros sans mutuelle. Ceci explique aussi pour la moyenne des paiements remboursés n'est pas aussi élevée.
Nous allons maintenant avec quelques études sur un dataset concernant le covid-19 en France, faire si possible des liens avec les mois de 02/2020 et 04/2020.
frames2 = [dff4,dff5]
dfF=pd.concat(frames2)
print(df.shape)
dfF.shape
data=dfF.copy()
(353304, 18)
pyo.init_notebook_mode()
viz4 = data[["AGE_BEN_SNDS", "BEN_SEX_COD","BEN_RES_REG"]].dropna()
viz4 = viz4.groupby(["AGE_BEN_SNDS","BEN_SEX_COD"])
viz5=viz4.apply(lambda x:x)
viz5.to_csv("Bénéficiaires3.csv")
dfMap=pd.read_csv(r"Bénéficiaires3.csv")
#On récupère le fichier json contenant toutes les régions
request2 = urlopen("https://france-geojson.gregoiredavid.fr/repo/regions.geojson")
frmap = json.load(request2)
reg_id_map={}
for feature in frmap['features']:
feature['id']=feature['properties']['code']
reg_id_map[feature['properties']['nom']]=feature['id']
#On enleve la colone index
dfMap = dfMap.iloc[: , 1:]
#Supprimons le 99 car c'est region inconnu
dfMap.drop(dfMap[dfMap['BEN_RES_REG'] == 99].index, inplace = True)
grouped_df=dfMap.groupby('BEN_RES_REG')
mean_df = grouped_df.mean()
dfMap=mean_df.reset_index()
fig=px.choropleth(dfMap,locations='BEN_RES_REG', geojson=frmap,
color='AGE_BEN_SNDS',title='Age moyen des bénéficiaires par région française sur 2 mois : 02/2020-04/2020')
fig.update_geos(fitbounds="locations", visible=False)
fig.show()
Correlation avec les chiffres du covid Repartition du covid par tranche d'age :
pyo.init_notebook_mode()
pd.set_option('display.max_rows', 50)
pd.set_option('display.max_columns', 10)
pd.set_option('display.width', 10)
df =pd.read_csv('covidage.csv',sep=';')
cat = {0 : "moyenne population",
9 :"0-9 ans",
19 :"10-19 ans",
29 : "20-29 ans",
39 : "30-39 ans",
49 : "40-49 ans",
59 : "50-59 ans",
69 : "60-69 ans",
79 : "70- 79 ans",
89 : "80-89 ans",
90 : "90 ans et plus"}
df['Datetime'] = pd.to_datetime(df['jour'])
df2 = df
df = df.loc[(df['Datetime'].dt.year==2020) ].groupby('clage_90').mean()
df['cat']=df.index.map(cat)
fig = px.bar(df, x='cat',y=['tx_prev_hosp','tx_prev_SC'],title = "moyenne dhospitalisés et d'individus en réanimation par jour classés par age en 2020")
fig.show()
df2['cat']=df2.clage_90.map(cat)
fig2 = px.line(df2,x='Datetime', y='tx_prev_hosp', color='cat',title="évolution du nombre dhospitalisés par jour classés par age en 2020")
fig2.show()
fig3 = px.line(df2,x='Datetime', y='tx_prev_SC', color='cat',title="évolution du nombre d'individus en réanimation par jour classés par age en 2020")
fig3.show()
Répartition spatio-temporelle du covid : carte de la répartition en france sur 2020 et sur un moi choisi des réanimations et des hospitalisations, évolution des réa et hospitalisations sur 2020v
pyo.init_notebook_mode()
df =pd.read_csv('covid.csv')
df['Datetime'] = pd.to_datetime(df['date'])
df['month'] = df['Datetime'].dt.strftime("%Y-%m" )
df = df.set_index('Datetime')
def AffMap(evol,field,month = None):
title = f'répartition des {field} '
if month == None :
evol = pd.DataFrame(df.groupby('reg').mean())
title += "sur l'année 2020"
else :
evol = pd.DataFrame(df.groupby(['month','reg']).mean())
evol =evol.loc[f"{month}",:]
title += f"sur le mois {month}"
request2 = urlopen("https://france-geojson.gregoiredavid.fr/repo/regions.geojson")
frmap = json.load(request2)
reg_id_map={}
for feature in frmap['features']:
feature['id']=feature['properties']['code']
reg_id_map[feature['properties']['nom']]=feature['id']
fig=px.choropleth(evol,locations=evol.index, geojson=frmap,
color=field,title=title)
fig.update_geos(fitbounds="locations", visible=False)
fig.show()
def Affgraph(df,region=''):
title = "nombre d'hospitalisations et de rea "
if region !='':
df = pd.DataFrame(df.groupby(['reg','month']).mean())
df = df.loc[region,:]
title += f"en {region}"
else :
df = pd.DataFrame(df.groupby(pd.Grouper(freq='M')).mean())
fig = px.bar(df, x=df.index,y=['hosp','rea'],title =title)
fig.show()
def AffCaractRegion(df,date =''):
title = "nombre de cas d'hospitalisation et rea"
if date !='':
title+=" en "+date[:-2]
df = pd.DataFrame(df.groupby(['month','lib_reg']).mean())
df = df.loc[date,:].reset_index(level=0, drop=True)
else :
df = pd.DataFrame(df.groupby('lib_reg').mean())
title+=" par region"
fig2 = px.bar(df,x=df.index,y = ['hosp','rea'],title = title)
fig2.show()
pyo.init_notebook_mode()
# A partir de 2020-03
#dd=input('date(YYYY-MM) : ')
AffMap(df,'hosp')
AffMap(df,'rea')
#Vous pouvez mettre un mois en particulier donc si vous le souhaitez
#AffMap(df,'rea',dd)
pyo.init_notebook_mode()
Affgraph(df,region=11)
Affgraph(df)
AffCaractRegion(df,date ='')